Four token-efficient, git-backed Agent Skills that help developers and AI coding agents reuse project knowledge instead of repeating investigation.
| Skill | Purpose | Implicit use |
|---|---|---|
team-project-memory |
Routes a task to the smallest specialized memory skill | Yes |
team-memory-search |
Searches validated project learnings before investigation | Yes, read-only |
team-memory-capture |
Drafts compact verified reusable learnings | No |
team-memory-maintenance |
Sets up and maintains the shared memory store | No |
Direct skill pages:
These skills follow the open Agent Skills specification and do not require the optional ContextEngine MCP server.
npx skills add meharajM/context-machine --listnpx skills add meharajM/context-machine --allnpx skills add meharajM/context-machine --skill '*' --agent codex -g -ynpx skills add meharajM/context-machine --skill team-memory-search --agent codex -g -ynpx skills use meharajM/context-machine --skill team-memory-search --agent codexAfter the repository has been seen by skills.sh telemetry:
- Repository page: https://skills.sh/meharajM/context-machine
- Search:
npx skills find team-memory --owner meharajM
The skills.sh index is telemetry-driven and cached, so first-time search results can appear after the initial installation rather than immediately.
Install all four skills as one Codex plugin:
codex plugin marketplace add meharajM/context-machine --ref main
codex plugin add team-project-memory@context-machine-teamAfter installation, start a new Codex thread so the skill list refreshes.
The optional npm discovery package mirrors the same four skills:
npm view @mhrj/team-project-memory-skillCurrent repository package version: 0.2.0.
This repo also contains the older ContextEngine MCP server. It is optional infrastructure for teams that later want MCP-based retrieval, sync, or patch workflows.
npm install -g @mhrj/contextengine-mcpOr run it without a global install:
npx -y @mhrj/contextengine-mcp{
"mcpServers": {
"contextengine": {
"command": "npx",
"args": ["-y", "@mhrj/contextengine-mcp"]
}
}
}To store data somewhere other than ~/.contextengine, pass --root:
{
"mcpServers": {
"contextengine": {
"command": "npx",
"args": ["-y", "@mhrj/contextengine-mcp", "--root", "/path/to/context-root"]
}
}
}Config is loaded from ~/.contextengine.json by default, with env vars overriding file values and --root taking final precedence.
Example config:
{
"root": "~/.contextengine",
"sync": {
"mode": "git",
"repo": "git@github.com:you/context.git",
"branch": "main",
"autoPush": true
},
"storage": {
"mode": "global"
},
"patches": {
"expiryDays": 30
}
}Example env vars:
CONTEXT_ENGINE_ROOT=~/.contextengine
CONTEXT_ENGINE_SYNC_MODE=git
CONTEXT_ENGINE_GIT_REPO=git@github.com:you/context.git
CONTEXT_ENGINE_GIT_BRANCH=main
CONTEXT_ENGINE_GDRIVE_FOLDER_ID=folder-id
CONTEXT_ENGINE_GDRIVE_CREDENTIALS=~/.contextengine/.gdrive-credentials.json| Tool | Purpose |
|---|---|
init_context |
Create a new project context with default sections and directories. |
read_context |
Read the full context.md or a single topic section. |
append_capture |
Append a timestamped note under a topic, optionally mirrored into sources/. |
search_context_topics |
Search context.md and archived topics/ files. |
log_agent_outcome |
Append a structured agent outcome tagged with session_id. |
compact_topic |
Archive an old topic body and replace it with a summary. |
propose_context_patch |
Submit a full proposed context.md body and store a reviewable diff. |
list_pending_patches |
List pending patches and clean up expired ones. |
reject_context_patch |
Reject a pending patch. |
apply_context_patch |
Apply a pending patch to context.md. |
undo_context_patch |
Restore the latest context.md backup. |
The server also ships the original agent-loop-mcp workflow so existing clients can migrate without breaking.
| Tool | Purpose |
|---|---|
init_loop |
Start a legacy loop session. |
log_step |
Append a step to active context and enforce self-healing on failures. |
compact_memory |
Summarize the active context into compacted history. |
report_blocker |
Mark a loop session as blocked. |
resume_loop |
Resume a blocked loop with human input. |
get_tool_suggestions |
Return fallback guidance when an agent is stuck. |
Legacy resource:
| Resource | Purpose |
|---|---|
loop://{session_id} |
Read the raw markdown state of a legacy loop session. |
Context resource:
| Resource | Purpose |
|---|---|
contextengine://{project}/context |
Read the markdown state of a project context. |
- Call
init_contextonce per project. - Start each session with
read_context. - Use
append_captureorlog_agent_outcomefor append-only facts. - Use
propose_context_patchfor broader edits that should be reviewed. - Use
list_pending_patches, thenapply_context_patchorreject_context_patchon explicit approval. - Use
compact_topicwhen sections become too large.
Set:
{
"sync": {
"mode": "git",
"repo": "git@github.com:you/context.git",
"branch": "main",
"autoPush": true
}
}Behavior:
- Initializes a git repo under the context root if needed.
- Sets a local sync identity if none is configured.
- Stages and commits changed files.
- Pushes to the configured branch.
Set:
{
"sync": {
"mode": "gdrive",
"gdriveFolderId": "your-folder-id",
"gdriveCredentials": "~/.contextengine/.gdrive-credentials.json",
"autoPush": true
}
}Behavior:
- Uploads each
projects/<project>/context.mdto the configured Drive folder as<project>-context.md. - Updates existing files in place when names match.
- Run
npm run smoke:gdrivewith realCONTEXT_ENGINE_GDRIVE_FOLDER_IDandCONTEXT_ENGINE_GDRIVE_CREDENTIALSto validate a live upload and clean up the smoke file.
- Install the server or configure
npx. - Create
~/.contextengine.jsonor set the relevant env vars. - Decide whether sync should be
none,git, orgdrive. - Run
init_contextfor the first project. - Confirm
read_contextreturns the created document. - If you rely on review gates, use
propose_context_patchinstead of broad direct rewrites.
npm install
npm run lint
npm test
npm run build
npm run smoke:mcp
npm run test:integration
npm run smoke:protocol
npm run smoke:package
npm run verify
npm publish --dry-run --access public
# Optional, requires live Google Drive credentials
npm run smoke:gdriveThis list describes local verification for a beta candidate. It is not a full
public-release claim by itself: production Drive support still needs a live
npm run smoke:gdrive pass with real credentials, and full public release
readiness still depends on the host, mobile, and PMF field gates in
docs/release-gate.md.
- Build:
npm run build - Test suite:
npm test - MCP stdio smoke:
npm run smoke:mcp - MCP integration and concurrency subset:
npm run test:integration - Raw MCP protocol smoke against the built server:
npm run smoke:protocol - Packed npm artifact smoke after
npm pack+ install:npm run smoke:package - Full local validation pipeline:
npm run verify - Git sync: covered by an automated local bare-remote test
- Google Drive sync: create/update behavior is covered by automated tests; production Drive support should only be claimed after
npm run smoke:gdrivepasses with realCONTEXT_ENGINE_GDRIVE_FOLDER_IDandCONTEXT_ENGINE_GDRIVE_CREDENTIALS