skills/aif-implement/SKILL.md
Execute implementation tasks from the current plan. Works through tasks sequentially, marks completion, and preserves progress for continuation across sessions. Use when user says "implement", "start coding", "execute plan", or "continue implementation".
npx skillsauth add lee-to/ai-factory aif-implementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Execute tasks from the plan, track progress, and enable session continuation.
Determine Handoff mode. If the caller passed HANDOFF_MODE and HANDOFF_SKIP_REVIEW as explicit text in the prompt, use those values. Otherwise, use the Bash tool:
Bash: printenv HANDOFF_MODE || true
Bash: printenv HANDOFF_SKIP_REVIEW || true
Then check HANDOFF_MODE:
HANDOFF_MODE is 1 (autonomous Handoff agent)The Handoff coordinator already manages status transitions and DB writes directly. Do NOT call MCP tools. Instead:
AskUserQuestion — use sensible defaults (auto-commit at checkpoints, skip pause prompts).HANDOFF_MODE is NOT 1 (manual Claude Code session)Handoff sync is handled inline — see Step 0.2 (after reading the plan file) for the task ID extraction and MCP sync trigger. The sync points are:
handoff_sync_status → "implementing" (with paused: true)handoff_push_plan with updated plan contenthandoff_push_plan with final plan, then handoff_sync_status → "review" (with paused: true) or "done" (with paused: false when HANDOFF_SKIP_REVIEW=1)CRITICAL: Always pass paused: true with every handoff_sync_status call except done. This prevents the autonomous Handoff agent from picking up the task while you work manually. Only done passes paused: false.
FIRST: Determine what state we're in:
1. Read `.ai-factory/config.yaml` if it exists to resolve:
- `paths.description`, `paths.architecture`, `paths.rules_file`, `paths.roadmap`, `paths.research`
- `paths.plan`, `paths.plans`, `paths.fix_plan`, `paths.patches`
- `paths.archive`
- `paths.rules`
- `language.ui`, `language.artifacts`
- `git.enabled`, `git.base_branch`, `git.create_branches`
- `workflow.plan_id_format` (default: `slug`) — used by branch-based plan discovery.
Active values: `slug` and `sequential`. When `sequential`, the resolver
globs `<paths.plans>/[0-9]{4}_<branch-slug>.md` first and falls back to
`<paths.plans>/<branch-slug>.md` only if no numbered match is found.
`timestamp` and `uuid` are **reserved values** and currently behave like `slug`.
Treat any unknown value as `slug`.
- `rules.base` plus any named `rules.<area>` entries
2. Parse arguments:
- --list → list available plans only (no implementation; STOP)
- --without-plan <description> → inline implementation mode; skip plan discovery and jump to Step 0.inline
- @<path> → explicit plan file override (highest priority)
- <number> → start from specific task
- status → status-only mode
- Optional inline-mode flag: --docs=yes|no|warn (only valid with --without-plan; default: warn)
3. If `git.enabled = true`, check for uncommitted changes (`git status`)
4. If `git.enabled = true`, check current branch
--list)If $ARGUMENTS contains --list, run read-only plan discovery and stop.
1. Get current branch:
git branch --show-current (git mode only)
2. Convert branch to filename: replace "/" with "-", add ".md" (git mode only)
3. Check existence of:
- <configured plans dir>/<branch-name>.md (git mode only, default `plan_id_format`)
- when `workflow.plan_id_format = sequential`: also glob
`<configured plans dir>/[0-9][0-9][0-9][0-9]_<branch-name-without-.md>.md`;
report all matches (highest-numbered first)
- if git mode is off or branch creation is disabled: any `*.md` full-mode plan in `<configured plans dir>/`
- <resolved fast plan path>
- <resolved fix plan path>
4. Print plan availability summary and usage hints
5. STOP.
Important: In --list mode:
For detailed output format and examples, see:
skills/aif-implement/references/IMPLEMENTATION-GUIDE.md → "List Available Plans (--list)"--without-plan)If $ARGUMENTS contains --without-plan, execute a single scoped task from the description WITHOUT creating or reading any plan file. This is the lightweight path for small feat/chore tasks that do not justify a full plan but are not bug fixes either (use /aif-fix for bugs).
Argument parsing:
1. description = everything after `--without-plan`, excluding any recognized flag tokens (`--docs=...`).
2. docs_policy = value of `--docs=yes|no|warn` if present, else `warn` (default).
3. Validation:
- description is empty →
ERROR: "Usage: /aif-implement --without-plan <description> [--docs=yes|no|warn]"
→ STOP
- arguments also contain `@<path>`, `status`, or a bare task id number →
ERROR: "`--without-plan` is mutually exclusive with @plan-file, status, and task id."
→ STOP
- `--docs=<value>` where <value> not in {yes, no, warn} →
ERROR: "Invalid --docs value. Expected yes|no|warn."
→ STOP
Scope guard (prevent silent mega-tasks):
Before executing, assess the description. If it looks too broad for a one-shot inline task — multiple unrelated imperatives joined by "and"/"и", references to multiple subsystems, or roughly more than ~300 characters of scope — do NOT attempt to guess a plan. Instead print:
Description looks too broad for inline implementation. Recommended:
/aif-plan fast <description>
→ STOP.
Small, focused descriptions (e.g. "add GET /healthz returning 200 with {status:"ok"}") proceed.
Surprise-warn on existing plan artifacts (non-blocking):
Inline mode ignores plan files by design. If any of these exist on disk, emit a WARN [inline] line so the user notices the intentional skip (do NOT read them, do NOT redirect):
<configured plans dir>/<branch>.md (git mode only) — or
<configured plans dir>/[0-9]{4}_<branch>.md when workflow.plan_id_format = sequentialpaths.plan)paths.fix_plan)Example: WARN [inline] paths.plan exists but is ignored in --without-plan mode.
Load project context (same as regular implement):
Use the resolved config from Step 0:
paths.description (DESCRIPTION.md) if presentpaths.architecture (ARCHITECTURE.md) if presentpaths.rules_file (RULES.md) + rules.base + named rules.<area> entries.ai-factory/skill-context/aif-implement/SKILL.md — MANDATORY if the file exists (same precedence and enforcement as regular mode in Step 0.1)language.ui, language.artifactsPlan artifact policy: inline mode does NOT load or use plan/fix-plan files. Plan files are never read, parsed, or executed. A minimal existence probe is permitted (see the surprise-warn section above) solely to emit the WARN [inline] line — nothing is read from disk. Also skip: resume/recovery reconciliation, TaskList loading, checkbox state comparison.
Execute the task (one-shot):
Inline implementation: <description>references/LOGGING-GUIDE.md/aif-plan if wider test coverage is needed.Prohibited in inline mode:
paths.plan / paths.plans/* / paths.fix_plan./aif-plan or /aif-fix.paths.patches (no [FIX] self-improvement patch — this is not a bugfix flow).TaskList / TaskGet / TaskUpdate (no plan = no persisted tasks).Handoff inline support:
Naming clarification:
--without-planmeans "without a local plan artifact on disk" (nopaths.plan/paths.plans/*/paths.fix_plan). When a Handoff task is linked, the task is still represented as a synthetic plan inside Handoff viahandoff_push_plan— that's a remote representation, not a local file. The local-no-plan contract is preserved; only the remote sync surface is unchanged.
When HANDOFF_MODE is 1 (autonomous Handoff agent invoked inline mode):
mcp__handoff__* tool (the coordinator manages status/sync directly — same rule as Step 0 (pre)).When HANDOFF_MODE is NOT 1 and HANDOFF_TASK_ID is set (manual Claude Code session linked to a Handoff task):
Build synthetic plan content:
# Inline implementation
- [ ] <description>
Call handoff_sync_status with { taskId: <HANDOFF_TASK_ID>, newStatus: "implementing", sourceTimestamp: "<current UTC ISO 8601>", direction: "aif_to_handoff", paused: true }.
Call handoff_push_plan with { taskId: <HANDOFF_TASK_ID>, planContent: <synthetic content above> }.
After successful execution, flip the checkbox to - [x] in the synthetic content and call handoff_push_plan again with the updated text.
Finalize sync:
HANDOFF_SKIP_REVIEW is 1 → handoff_sync_status → "done" with paused: false.handoff_sync_status → "review" with paused: true.If HANDOFF_TASK_ID is missing → skip all MCP sync for this run.
Docs policy (inline mode, driven by --docs):
--docs=yes → after completion, show the docs checkpoint (same AskUserQuestion as Docs: yes in regular mode) and route changes through /aif-docs.--docs=no → suppress the documentation checkpoint, emit WARN [docs] --docs=no in inline mode; documentation checkpoint skipped.--docs=warn (default) → emit WARN [docs] Inline mode default is warn-only; documentation checkpoint skipped. Pass --docs=yes to enable.Context maintenance in inline mode:
AGENTS.md: allowed only if new modules/folders were actually created.Completion output (inline mode):
## Inline Implementation Complete
Task: <description>
Files modified:
- <file> (created|modified)
Documentation: <outcome per --docs>
What's next?
1. 🔍 /aif-verify — Verify the change (recommended)
2. 💾 /aif-commit — Commit directly
Then offer:
AskUserQuestion: Inline task complete. What's next?
Options:
1. Verify first — Run /aif-verify (recommended)
2. Skip to commit — Go straight to /aif-commit
→ STOP after the chosen follow-up completes. No summary document, no report file.
If the user is resuming the next day, says the session was abandoned, or you suspect context was lost (e.g. after /clear), rebuild local context from the repo before continuing tasks:
If git.enabled = true:
1. git status
2. git branch --show-current
3. git log --oneline --decorate -20
4. (optional) git diff --stat
5. (optional) git stash list
If git.enabled = false, skip git recovery commands and reconcile only from the resolved plan/fix-plan paths plus the working tree state.
Then reconcile plan/task state:
@plan-file override wins; otherwise branch-named plan takes priority over the resolved fast plan).git.enabled = false or full plans were created without a branch, prefer:
@plan-file,*.md file in the configured plans dir,TaskList statuses vs plan checkboxes.
TaskUpdate(..., status: "completed") and update the plan checkbox.If uncommitted changes exist:
AskUserQuestion: You have uncommitted changes. Commit them first?
Options:
1. Yes, commit now (/aif-commit)
2. No, stash and continue
3. Cancel
Based on choice:
/aif-commit, then continue to plan discoverygit stash push -m "aif-implement: stash before plan execution", then continueIf NO plan file exists but the resolved fix plan exists:
A fix plan was created by /aif-fix in plan mode. Redirect to fix workflow:
Found a fix plan at the resolved fix plan path.
This plan was created by /aif-fix and should be executed through the fix workflow
(it creates a patch and handles cleanup automatically).
Running /aif-fix to execute the plan...
→ Invoke /aif-fix (without arguments – it will detect the resolved fix plan and execute it).
→ STOP — do not continue with implement workflow.
If NO plan file exists AND no resolved fix plan (all tasks completed or fresh start):
AskUserQuestion: No active plan found. Current branch: <current-branch>.
What would you like to do?
Options:
1. Start new feature from current branch
2. Return to configured base branch and start new feature
3. Create quick task plan (no branch)
4. Nothing, just checking status
Based on choice:
/aif-plan full <description>git checkout <configured-base-branch>, then git pull origin <configured-base-branch> → /aif-plan full <description> (git mode only)/aif-plan fast <description>If git.enabled = false, replace option 2 with:
2. Create rich full plan without branch creation/aif-plan full <description> without any git commandsIf plan file exists → continue to Step 0.1
Use the resolved config from Step 0:
language.ui for prompts, language.artifacts for generated contentrules.base + named rules.<area> entriesRead .ai-factory/DESCRIPTION.md (use path from config) if it exists to understand:
Read the resolved architecture artifact if it exists (paths.architecture, default: .ai-factory/ARCHITECTURE.md) to understand:
Read the resolved RULES.md path if it exists:
Read rules hierarchy (paths from config):
rules.api, rules.frontend)Load all available rule files and merge them. More specific rules override general ones.
Read .ai-factory/skill-context/aif-implement/SKILL.md — MANDATORY if the file exists.
This file contains project-specific rules accumulated by /aif-evolve from patches,
codebase conventions, and tech-stack analysis. These rules are tailored to the current project.
How to apply skill-context rules:
Enforcement: After generating any output artifact, verify it against all skill-context rules. If any rule is violated — fix the output before presenting it to the user.
Patch fallback (limited, only when skill-context is missing):
.ai-factory/skill-context/aif-implement/SKILL.md does not exist and the resolved patches dir exists:
Glob to find *.md files in the resolved patches dirUse this context when implementing:
If $ARGUMENTS contains @<path>:
Use this explicit plan file and skip automatic plan discovery.
1. Extract path after "@"
2. Resolve relative to project root (absolute paths are also valid)
3. If file does not exist:
"Plan file not found: <path>
Provide an existing markdown plan file, for example:
- /aif-implement @<resolved fast plan path>
- /aif-implement @.ai-factory/plans/feature-user-auth.md"
→ STOP
4. If file is the resolved fix plan path:
→ invoke /aif-fix (ownership + cleanup workflow) and STOP
5. Otherwise use this file as the active plan
Then continue with normal execution using the selected plan file.
If no @<path> override is provided, check plan files in this order:
Check for plan files in this order:
1. Check current git branch:
git branch --show-current
→ Convert branch name to filename: replace "/" with "-" (this is <branch-slug>)
→ Resolve full-mode plan filename in this order:
a. When `workflow.plan_id_format = sequential`, glob
`<configured plans dir>/[0-9][0-9][0-9][0-9]_<branch-slug>.md`.
- 0 matches → fall through to step (b).
- 1 match → use it.
- >1 matches → use the **highest-numbered** match and emit
`WARN [aif-implement] multiple sequential plans for <branch>: <list>; using <chosen>`.
b. `<configured plans dir>/<branch-slug>.md` (default behavior, also used as
the fallback when sequential glob returned 0 matches).
2. If git mode is off or no branch-based plan is found above:
- Check whether the configured plans dir contains exactly one `*.md` plan file created by `/aif-plan full` without a branch
- If exactly one exists → use it
- If multiple exist → ask the user to choose or use `@<path>`
3. No full-mode plan → Check the resolved fast plan path
4. No full-mode plan and no resolved fast plan → Check the resolved fix plan path
→ If exists: invoke /aif-fix (handles its own workflow with patches) and STOP
Priority:
@<path> argument - explicit user-selected plan file/aif-plan full) - if it matches current branchpaths.plans (from /aif-plan full without branch creation)paths.plan (from /aif-plan fast) - fallback when no full plan existspaths.fix_plan - redirect to /aif-fix (from /aif-fix plan mode)Note: Plan discovery scans paths.plans/ only. Plans archived to paths.archive/plans/ by /aif-archive are excluded from discovery.
Read the plan file to understand:
- [ ] / - [x]) to keep progress syncedImmediately after reading the plan file, check the first line for <!-- handoff:task:<uuid> -->:
HANDOFF_MODE is NOT 1 (manual session): extract the task ID. This is the Handoff task ID for MCP sync throughout this session. Call handoff_sync_status with { taskId: <extracted-id>, newStatus: "implementing", sourceTimestamp: "<current UTC time in ISO 8601 format, e.g. 2026-04-02T18:30:45.000Z>", direction: "aif_to_handoff", paused: true }. The timestamp must reflect the actual current time, not midnight or an approximation.HANDOFF_MODE is 1: the Handoff coordinator handles sync — do nothing.TaskList → Get all tasks with status
Find:
## Implementation Progress
✅ Completed: 3/8 tasks
🔄 In Progress: Task #4 - Implement search service
⏳ Pending: 4 tasks
Current task: #4 - Implement search service
For each task:
3.1: Fetch full details
TaskGet(taskId) → Get description, files, context
3.2: Mark as in_progress
TaskUpdate(taskId, status: "in_progress")
3.3: Implement the task
3.4: Verify implementation
3.5: Mark as completed
TaskUpdate(taskId, status: "completed")
3.6: Update checkbox in plan file
IMMEDIATELY after completing a task, update the checkbox in the plan file:
# Before
- [ ] Task 1: Create user model
# After
- [x] Task 1: Create user model
This is MANDATORY — checkboxes must reflect actual progress:
Edit tool to change - [ ] to - [x]Handoff sync (manual mode ONLY — skip when HANDOFF_MODE is 1): If a Handoff task ID was extracted in Step 0.2, call handoff_push_plan with { taskId: <id>, planContent: <full updated plan text> } to sync the checklist progress.
3.7: Update the resolved description artifact if needed
If during implementation:
→ Update the resolved description artifact (paths.description, default: .ai-factory/DESCRIPTION.md) to reflect the change:
## Tech Stack
- **Cache:** Redis (added for session storage)
This keeps the resolved description artifact as the source of truth.
3.7.1: Update AGENTS.md and ARCHITECTURE.md if project structure changed
If during implementation:
src/modules/, new API routes directory, etc.)→ Update AGENTS.md — refresh the "Project Structure" tree and "Key Entry Points" table to reflect new directories/files.
→ Update the resolved architecture artifact — if new modules or layers were added that should be documented in the folder structure section.
Only update if structure actually changed — don't rewrite on every task. Check if new directories were created that aren't in the current structure map.
3.8: Check for commit checkpoint
If the plan has commit checkpoints and current task is at a checkpoint:
AskUserQuestion: ✅ Tasks <first>-<last> completed. This is a commit checkpoint. Ready to commit? Suggested message: "<conventional commit message>"
Options:
1. Yes, commit now (/aif-commit)
2. No, continue to next task
3. Skip all commit checkpoints
Based on choice:
/aif-commit with the suggested message, then continue to next task/aif-implement run, skip the prompt automatically and proceed directly to the next task (as if user selected "No, continue to next task" each time). This is in-context memory — resets on /clear or new session3.9: Move to next task or pause
Progress is automatically saved via TaskUpdate.
To pause:
Current progress saved.
Completed: 4/8 tasks
Next task: #5 - Add pagination support
To resume later, run:
/aif-implement
To resume (next session):
/aif-implement
→ Automatically finds next incomplete task
Handoff sync (manual mode ONLY — skip entirely when HANDOFF_MODE is 1): If a Handoff task ID was extracted from the plan annotation AND HANDOFF_MODE is NOT 1:
handoff_push_plan with { taskId: <id>, planContent: <final updated plan text> }.HANDOFF_SKIP_REVIEW is 1: call handoff_sync_status with { taskId: <id>, newStatus: "done", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: false }.handoff_sync_status with { taskId: <id>, newStatus: "review", sourceTimestamp: "<current UTC time in ISO 8601 format>", direction: "aif_to_handoff", paused: true }.When all tasks are done:
## Implementation Complete
All 8 tasks completed.
Branch: feature/product-search
Plan file: .ai-factory/plans/feature-product-search.md
Files modified:
- src/services/search.ts (created)
- src/api/products/search.ts (created)
- src/types/search.ts (created)
Documentation: updated existing docs | created docs/<feature-slug>.md | skipped by user | warn-only (Docs: no/unset)
What's next?
1. 🔍 /aif-verify — Verify nothing was missed (recommended)
2. 💾 /aif-commit — Commit the changes directly
Check ROADMAP.md progress:
If the resolved roadmap artifact exists:
## Roadmap Linkage with a non-none milestone, prefer that milestone for completion marking[x] and add entry to the Completed table with today's dateOnly do this step when there is something concrete to capture.
DESCRIPTION.md (allowed in this command):
ARCHITECTURE.md + AGENTS.md (allowed in this command):
AGENTS.md structure maps or entry points, refresh them only when they are now incorrect.ROADMAP.md (allowed, limited):
WARN [roadmap] ... and suggest the owner command:
/aif-roadmap check/aif-roadmap <short update request>RULES.md (NOT allowed in this command):
paths.rules_file artifact from /aif-implement./aif-rules./aif-rules automatically (it is user-invoked).If candidate rules exist:
AskUserQuestion: Capture new project rules in the resolved RULES.md artifact?
Options:
1. Yes — output `/aif-rules ...` commands (recommended)
2. No — skip
Documentation policy checkpoint (after completion, before plan cleanup):
Read the plan file setting Docs: yes/no.
If plan setting is Docs: yes:
AskUserQuestion: Documentation checkpoint — how should we document this feature?
Options:
1. Update existing docs (recommended) — invoke /aif-docs
2. Create a new feature doc page — invoke /aif-docs with feature-page context
3. Skip documentation
Handling:
/aif-docs to update README/docs based on completed work/aif-docs with context to create docs/<feature-slug>.md, include sections (Summary, Usage/user-facing behavior, Configuration, API/CLI changes, Examples, Troubleshooting, See Also), and add a README docs-table link/aif-docs; emit WARN [docs] Documentation skipped by userIf plan setting is Docs: no or setting is unset:
/aif-docs automaticallyWARN [docs] Docs policy is no/unset; skipping documentation checkpointAlways include documentation outcome in the final completion output:
Documentation: updated existing docsDocumentation: created docs/<feature-slug>.mdDocumentation: skipped by userDocumentation: warn-only (Docs: no/unset)Handle plan file after completion:
If the resolved fast plan path (from /aif-plan fast):
AskUserQuestion: Would you like to delete the resolved fast plan file? (It's no longer needed)
Options:
1. Yes, delete it
2. No, keep it
Based on choice:
rm <resolved fast plan path>
If branch-named file (e.g., <configured plans dir>/feature-user-auth.md):
Check if running in a git worktree:
Detect worktree context:
# If .git is a file (not a directory), we're in a worktree
[ -f .git ]
If we ARE in a worktree, offer to merge back and clean up:
You're working in a parallel worktree.
Branch: <current-branch>
Worktree: <current-directory>
Main repo: <main-repo-path>
AskUserQuestion: Would you like to merge this branch into the configured base branch and clean up?
Options:
1. Yes, merge and clean up (recommended)
2. No, I'll handle it manually
Based on choice:
To merge and clean up later:
cd <main-repo-path>
git merge <branch>
/aif-plan --cleanup <branch>
Ensure everything is committed — check git status. If uncommitted changes exist, suggest /aif-commit first and wait.
Get repository root path:
MAIN_REPO=$(git rev-parse --git-common-dir | sed 's|/\.git$||')
BRANCH=$(git branch --show-current)
Switch to the repository root:
cd "${MAIN_REPO}"
Merge the branch:
git checkout <configured-base-branch>
git pull origin <configured-base-branch>
git merge "${BRANCH}"
If merge conflict occurs:
⚠️ Merge conflict detected. Resolve manually:
cd <main-repo-path>
git merge --abort # to cancel
# or resolve conflicts and git commit
→ STOP here, do not proceed with cleanup.
Remove worktree and branch (only if merge succeeded):
git worktree remove <worktree-path>
git branch -d "${BRANCH}"
Confirm:
✅ Merged and cleaned up!
Branch <branch> merged into <configured-base-branch>.
Worktree removed.
You're now in: <main-repo-path> (<configured-base-branch>)
→ STOP — worktree merged and removed, no further steps needed.
AskUserQuestion: All tasks complete. What's next?
Options:
1. Verify first — Run /aif-verify to check completeness (recommended)
2. Skip to commit — Go straight to /aif-commit
Based on choice:
/aif-verify → after it completes, continue to context cleanup below/aif-commit → after it completes, continue to context cleanup belowContext cleanup (after verify or commit):
Suggest the user to free up context space if needed: /clear (full reset) or /compact (compress history).
IMPORTANT: NO summary reports, NO analysis documents, NO wrap-up tasks.
/aif-implement
Continues from next incomplete task.
/aif-implement --list
Lists the resolved fast plan path, resolved fix plan path, and current-branch <configured plans dir>/<branch>.md (or <configured plans dir>/<NNNN>_<branch>.md when workflow.plan_id_format = sequential), then exits without implementation.
/aif-implement @my-custom-plan.md
/aif-implement @.ai-factory/plans/feature-user-auth.md status
Uses the provided plan file instead of auto-detecting by branch/default files.
/aif-implement --without-plan add GET /healthz endpoint returning {"status":"ok"}
/aif-implement --without-plan rename LogLevel.VERBOSE to LogLevel.TRACE --docs=yes
One-shot execution of a small task without any plan file. Mutually exclusive with @plan-file, status, and task id. Does not create FIX_PLAN.md or patches. Default docs policy is warn; pass --docs=yes to run the docs checkpoint, --docs=no to silence the warning. See Step 0.inline for the full flow.
/aif-implement 5
Starts from task #5 (useful for skipping or re-doing).
/aif-implement status
Shows progress without executing.
/aif-best-practices guidelines (naming, structure, error handling)paths.rules_file and paths.research artifacts.WARN/ERROR outputs only; this does not replace the required verbose implementation logging rules below.For progress display format, blocker handling, session continuity examples, and full flow examples → see references/IMPLEMENTATION-GUIDE.md
- [ ] → - [x] immediately after task completionALWAYS add verbose logging when implementing code. For logging guidelines, patterns, and management requirements → read references/LOGGING-GUIDE.md
Key rules: log function entry/exit, state changes, external calls, error context. Use structured logging, configurable log levels (LOG_LEVEL env var).
DO NOT skip logging to "keep code clean" - verbose logging is REQUIRED during implementation, but MUST be configurable.
data-ai
Archive completed plans and roadmap milestones. Moves finished plans to the archive directory and optionally trims closed milestones from ROADMAP.md. Use when user says "archive plans", "clean up plans", "archive completed", or "trim roadmap".
tools
Set up agent context for a project. Analyzes tech stack, installs relevant skills from skills.sh, generates custom skills, and configures MCP servers. Use when starting new project, setting up AI context, or asking "set up project", "configure AI", "what skills do I need".
development
Verify completed implementation against the plan. Checks that all tasks were fully implemented, nothing was forgotten, code compiles, tests pass, and quality standards are met. Use after "/aif-implement" completes, or when user says "verify", "check work", "did we miss anything".
data-ai
Plan implementation for a feature or task. Two modes — fast (single quick plan) or full (richer plan with optional git branch/worktree flow). Use when user says "plan", "new feature", "start feature", "create tasks".