From aman-claude-code
Manage your active project threads. Use when the user asks 'what's the active project', says 'I got a new project', wants to switch/load/close a project, asks 'how many projects', or wants to register existing work as projects.
npx claudepluginhub amanasmuei/aman-claude-code --plugin aman-claude-codeThis skill uses the workspace's default tool permissions.
You are managing the user's project threads stored at `~/.aprojects/dev/plugin/projects.md`. The data is shaped by the aman-mcp `project_*` tools.
Verifies tests pass on completed feature branch, presents options to merge locally, create GitHub PR, keep as-is or discard; executes choice and cleans up worktree.
Guides root cause investigation for bugs, test failures, unexpected behavior, performance issues, and build failures before proposing fixes.
Writes implementation plans from specs for multi-step tasks, mapping files and breaking into TDD bite-sized steps before coding.
You are managing the user's project threads stored at ~/.aprojects/dev/plugin/projects.md. The data is shaped by the aman-mcp project_* tools.
Projects are LRU-positioned — top 10 active project threads compete for slots, position #1 = most recently created/loaded/touched. Closing a project frees a slot. LRU eviction at #11 pushes the oldest to off-list (still alive, not done).
| User says (paraphrased) | Call this MCP tool |
|---|---|
| "what's the active project", "what project am i on", "what are we working on" | mcp__aman__project_active |
| "i got a new project [name]", "create a project for X", "new thread: X" | mcp__aman__project_add (then offer linkedIntentionId follow-up) |
| "how many projects", "list projects", "show all", "all threads" | mcp__aman__project_list (default filter) |
| "load/switch/go back to project X" | mcp__aman__project_load |
| "save this session", "log this to project", "save what we just did" | mcp__aman__project_save (workspace-guard first, see below) |
| "close project X", "we're done with X" | mcp__aman__project_close (status=complete) |
| "pause project X", "stepping away from X" | mcp__aman__project_close (status=paused) |
| "abandon X", "X was the wrong direction" | mcp__aman__project_close (status=abandoned) |
| "link X to intention Y" | mcp__aman__project_update with linkedIntentionId |
| "register my existing projects", "bootstrap projects" | Run the bootstrap flow below |
Before calling project_save, check the current cwd against the active project's workspaces array (read from project_active). If they don't match:
<cwd>, but the active project is <name> whose workspaces are <list>. Save to <name> anyway, or pick a different project?"project_load first to switch active.When the user says "register my existing projects" or equivalent, OR on first session after ~/.aprojects/ is created:
mcp__aman__intentions_list (each is a candidate; carries niyyah)~/.aeval/dev/plugin/eval.md (extract proper-noun project mentions from last 5 entries)cd targets if available; otherwise list direct subdirs of ~/project-aman (best-effort)project_add with backdated createdAt if known. If linked to an intention, also call project_update with linkedIntentionId.The SessionStart hook injects an <arienz-projects-continuity> block with active project info. Use that block — do NOT call project_active again at session start unless the user asks. The block tells you:
When you greet the user, anchor the active thread inline if cwd matches ("you're in ~/aman-mcp — that's one of Phase 1.5 substrate's workspaces"), or surface as soft anchor if not ("Phase 1.5 substrate is your active thread, last touched yesterday").
If project_active returns null, the user has no projects yet. Offer the bootstrap flow once: "No active projects yet — say 'i got a new project' or 'register my existing projects' to start." Don't repeat unprompted.
Every project_add / project_load / project_close / eviction must produce a user-visible confirmation line. If the user creates a project that triggers eviction, name the evicted project too. ("Created quran-tracker. old-experiment bumped off position #10 into off-list — still there if you want to restore it.")