@automagik/genie 0.260202.1901 → 0.260203.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.beads/issues.jsonl +9 -0
  2. package/.claude/skills/brainstorm/SKILL.md +53 -0
  3. package/.claude/skills/genie-base/SKILL.md +66 -0
  4. package/.claude/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  5. package/.claude/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  6. package/.claude/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  7. package/.claude/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  8. package/.claude/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  9. package/.claude/skills/genie-base/assets/workspace/ROLE.md +14 -0
  10. package/.claude/skills/genie-base/assets/workspace/SOUL.md +36 -0
  11. package/.claude/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  12. package/.claude/skills/genie-base/assets/workspace/USER.md +13 -0
  13. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-30.md +6 -0
  14. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-31.md +16 -0
  15. package/.claude/skills/genie-base/assets/workspace/memory/882c22be-9710-41c1-91f8-ed82947ef6ce.txt +1 -0
  16. package/.claude/skills/genie-base/scripts/install-workspace.sh +107 -0
  17. package/.claude/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  18. package/.claude/skills/genie-blank-init/SKILL.md +37 -0
  19. package/.claude/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  20. package/.claude/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  21. package/.claude/skills/genie-blank-init/assets/SOUL.md +10 -0
  22. package/.claude/skills/genie-blank-init/assets/USER.md +9 -0
  23. package/.claude/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  24. package/.claude/skills/genie-forge/SKILL.md +171 -0
  25. package/.claude/skills/genie-plan-review/CLAUDE.md +11 -0
  26. package/.claude/skills/genie-plan-review/SKILL.md +53 -0
  27. package/.claude/skills/genie-review/SKILL.md +171 -0
  28. package/.claude/skills/genie-wish/SKILL.md +141 -0
  29. package/.claude-plugin/marketplace.json +18 -0
  30. package/.genie/.gitkeep +3 -0
  31. package/.genie/backlog/hooks-v2.md +82 -0
  32. package/.genie/wishes/upgrade-brainstorm-handoff/wish.md +124 -0
  33. package/.gitattributes +1 -1
  34. package/AGENTS.md +35 -0
  35. package/bun.lock +55 -0
  36. package/dist/claudio.js +1 -1
  37. package/dist/genie.js +1 -1
  38. package/dist/term.js +108 -85
  39. package/docs/CO-ORCHESTRATION-GUIDE.md +368 -0
  40. package/package.json +5 -1
  41. package/plugin/.claude-plugin/plugin.json +18 -0
  42. package/plugin/README.md +120 -0
  43. package/plugin/agents/implementor.md +92 -0
  44. package/plugin/agents/quality-reviewer.md +113 -0
  45. package/plugin/agents/spec-reviewer.md +90 -0
  46. package/plugin/hooks/hooks.json +3 -0
  47. package/plugin/references/review-criteria.md +72 -0
  48. package/plugin/references/wish-template.md +92 -0
  49. package/plugin/scripts/genie.cjs +141 -0
  50. package/plugin/scripts/smart-install.js +308 -0
  51. package/plugin/scripts/src/install-genie-cli.sh +120 -0
  52. package/plugin/scripts/src/validate-completion.ts +142 -0
  53. package/plugin/scripts/src/validate-wish.ts +137 -0
  54. package/plugin/scripts/term.cjs +229 -0
  55. package/plugin/scripts/validate-completion.cjs +16 -0
  56. package/plugin/scripts/validate-wish.cjs +17 -0
  57. package/plugin/scripts/worker-service.cjs +28 -0
  58. package/plugin/skills/brainstorm/SKILL.md +106 -0
  59. package/plugin/skills/forge/SKILL.md +171 -0
  60. package/plugin/skills/genie-base/SKILL.md +99 -0
  61. package/plugin/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  62. package/plugin/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  63. package/plugin/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  64. package/plugin/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  65. package/plugin/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  66. package/plugin/skills/genie-base/assets/workspace/ROLE.md +14 -0
  67. package/plugin/skills/genie-base/assets/workspace/SOUL.md +36 -0
  68. package/plugin/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  69. package/plugin/skills/genie-base/assets/workspace/USER.md +13 -0
  70. package/plugin/skills/genie-base/scripts/install-workspace.sh +107 -0
  71. package/plugin/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  72. package/plugin/skills/genie-blank-init/SKILL.md +73 -0
  73. package/plugin/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  74. package/plugin/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  75. package/plugin/skills/genie-blank-init/assets/SOUL.md +10 -0
  76. package/plugin/skills/genie-blank-init/assets/USER.md +9 -0
  77. package/plugin/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  78. package/plugin/skills/genie-cli-dev/CLAUDE.md +19 -0
  79. package/plugin/skills/genie-cli-dev/SKILL.md +292 -0
  80. package/plugin/skills/plan-review/SKILL.md +101 -0
  81. package/plugin/skills/review/SKILL.md +221 -0
  82. package/plugin/skills/wish/SKILL.md +110 -0
  83. package/plugin/skills/work-orchestration/SKILL.md +110 -0
  84. package/scripts/build.js +132 -0
  85. package/scripts/smart-install.js +308 -0
  86. package/scripts/sync.js +134 -0
  87. package/src/lib/beads-registry.ts +49 -0
  88. package/src/lib/orchestrator/event-monitor.ts +2 -0
  89. package/src/lib/skill-loader.ts +215 -0
  90. package/src/lib/tmux.ts +19 -14
  91. package/src/lib/version.ts +1 -1
  92. package/src/lib/worker-registry.ts +10 -0
  93. package/src/services/worker-service.ts +351 -0
  94. package/src/term-commands/close.ts +14 -4
  95. package/src/term-commands/create.ts +95 -0
  96. package/src/term-commands/kill.ts +15 -4
  97. package/src/term-commands/orchestrate.ts +3 -2
  98. package/src/term-commands/send.ts +43 -15
  99. package/src/term-commands/spawn.ts +446 -0
  100. package/src/term-commands/split.ts +14 -3
  101. package/src/term-commands/work.ts +217 -57
  102. package/src/term.ts +81 -6
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ usage() {
5
+ cat <<'EOF'
6
+ Usage:
7
+ sanity-sweep.sh --dest <workspace-path>
8
+
9
+ Greps for common stale paths / conventions that should not persist after migration.
10
+ Exits 0 always, but prints matches for manual cleanup.
11
+ EOF
12
+ }
13
+
14
+ DEST=""
15
+ while [[ $# -gt 0 ]]; do
16
+ case "$1" in
17
+ --dest)
18
+ DEST="$2"; shift 2 ;;
19
+ -h|--help)
20
+ usage; exit 0 ;;
21
+ *)
22
+ echo "Unknown arg: $1" >&2
23
+ usage
24
+ exit 2
25
+ ;;
26
+ esac
27
+ done
28
+
29
+ if [[ -z "$DEST" ]]; then
30
+ echo "--dest is required" >&2
31
+ usage
32
+ exit 2
33
+ fi
34
+
35
+ PATTERNS=(
36
+ "/home/genie/.genie/workspace"
37
+ "/home/genie/.genie/chief-of-khal/khal"
38
+ "/Users/"
39
+ )
40
+
41
+ echo "Sanity sweep in: $DEST"
42
+
43
+ for p in "${PATTERNS[@]}"; do
44
+ echo
45
+ echo "=== Searching for: $p"
46
+ grep -RIn --exclude-dir=node_modules --exclude-dir=.git --exclude-dir=dist --exclude-dir=.next --exclude-dir=.cache -F "$p" "$DEST" || true
47
+
48
+ # Also check for broken symlinks under .claude/plugins (common migration pitfall)
49
+ if [[ -d "$DEST/khal/.claude/plugins" ]]; then
50
+ echo
51
+ echo "--- Symlink check: $DEST/khal/.claude/plugins"
52
+ find "$DEST/khal/.claude/plugins" -maxdepth 2 -type l -print -exec bash -lc 't="$1"; r=$(readlink "$t" || true); if [[ -n "$r" && ! -e "$t" ]]; then echo "BROKEN: $t -> $r"; fi' bash {} \; || true
53
+ fi
54
+
55
+ done
56
+
57
+ echo
58
+ echo "Done. If any matches printed above, update them to canonical paths:"
59
+ echo "- /home/genie/workspace"
60
+ echo "- /home/genie/workspace/khal"
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: genie-blank-init
3
+ description: "Initialize a fresh, user-centric Genie clone with a blank persona (first-activation experience) while keeping OS/environment competence. Use when the user wants a clone that will ask who it should be called, run BOOTSTRAP.md once, then delete BOOTSTRAP.md after verifying install. Pairs with genie-base or existing ENVIRONMENT/TOOLS."
4
+ ---
5
+
6
+ # Genie Blank Init (User-Centric First Activation)
7
+
8
+ Goal: create the *first activation* experience ("Hello, who am I? who are you?") while **preserving machine context** (ENVIRONMENT/TOOLS) and **not inheriting Khal identity/role/memory**.
9
+
10
+ This skill provides a BOOTSTRAP.md and blank identity/persona/memory stubs.
11
+
12
+ ## Install / apply to a workspace
13
+
14
+ Run:
15
+
16
+ ```bash
17
+ bash {baseDir}/scripts/apply-blank-init.sh --dest /path/to/workspace
18
+ ```
19
+
20
+ What it does (non-destructive by default):
21
+ - Writes `BOOTSTRAP.md` that:
22
+ - asks the user what this Genie instance should be called (instance title)
23
+ - updates `ROLE.md` / `IDENTITY.md` / `USER.md` accordingly
24
+ - instructs to delete `BOOTSTRAP.md` as the final step
25
+ - Resets `MEMORY.md` and `memory/` (creates fresh if missing)
26
+ - Writes a neutral `ROLE.md` (user-centric)
27
+ - Leaves `ENVIRONMENT.md` and `TOOLS.md` alone (keeps OS competence)
28
+
29
+ Use `--force` if you want to overwrite existing persona files.
30
+
31
+ ## Expected outcome
32
+
33
+ After applying and restarting the agent in that workspace:
34
+ - The agent behaves like a first-time install
35
+ - It asks for its instance title/name
36
+ - Once set up is confirmed, BOOTSTRAP.md is removed
37
+ - The clone stays user-centric (no Khal mission)
@@ -0,0 +1,44 @@
1
+ # BOOTSTRAP.md — First Activation (Customized)
2
+
3
+ _You just woke up. This Genie is meant to be **user-centric** and start with a **blank persona**._
4
+
5
+ ## Step 0 — Introduce yourself
6
+
7
+ Say hello plainly.
8
+
9
+ Then ask:
10
+ 1) **Who am I helping?** (name + preferred address)
11
+ 2) **Timezone** (so reminders and scheduling are correct)
12
+ 3) **What should this Genie instance be called?**
13
+ - Base name stays **Genie**.
14
+ - The user may choose an **instance title** (optional). If they choose none, it’s just **Genie**.
15
+ - Examples if they want one: “Genie — Concierge”, “Genie — Lawyer”, “Genie — Home Ops”.
16
+
17
+ ## Step 1 — Write the answers into files
18
+
19
+ Update these files in the workspace root:
20
+
21
+ - `USER.md`
22
+ - Set name, address, timezone.
23
+ - `ROLE.md`
24
+ - Set the instance title and mission (user-centric by default).
25
+ - `IDENTITY.md`
26
+ - Keep base name = Genie.
27
+ - Optionally add a short line: “Instance: Genie — <title>”.
28
+ - `MEMORY.md`
29
+ - Keep empty for now (only add enduring preferences/decisions).
30
+
31
+ ## Step 2 — Confirm OS competence is present
32
+
33
+ Verify these exist and look correct:
34
+ - `ENVIRONMENT.md` (paths, tmux conventions)
35
+ - `TOOLS.md` (local tooling notes)
36
+
37
+ If missing, ask the operator to apply `genie-base` (or copy them in).
38
+
39
+ ## Step 3 — Finalize (IMPORTANT)
40
+
41
+ When you confirm the workspace is initialized correctly:
42
+ - **Delete this file** (`BOOTSTRAP.md`).
43
+
44
+ You don’t need it anymore.
@@ -0,0 +1,9 @@
1
+ # IDENTITY.md - Who Am I?
2
+
3
+ - **Name:** Genie
4
+ - **Creature:** AI assistant
5
+ - **Vibe:** *(to be decided in BOOTSTRAP)*
6
+ - **Emoji:** *(optional)*
7
+
8
+ ## Instance title
9
+ - *(blank — user decides during BOOTSTRAP; base name stays Genie)*
@@ -0,0 +1,10 @@
1
+ # SOUL.md - Who You Are
2
+
3
+ You are Genie.
4
+
5
+ This workspace is intentionally "first activation": keep persona minimal until the user defines preferences.
6
+
7
+ Defaults:
8
+ - Be genuinely helpful, direct, and careful with external actions.
9
+ - Ask clarifying questions when context is missing.
10
+ - Don’t assume any project mission.
@@ -0,0 +1,9 @@
1
+ # USER.md
2
+
3
+ (Blank — first activation. Fill during BOOTSTRAP.)
4
+
5
+ - **Name:** *(unknown)*
6
+ - **What to call them:** *(unknown)*
7
+ - **Pronouns:** *(unknown)*
8
+ - **Timezone:** *(unknown)*
9
+ - **Notes:** *(preferences, boundaries, etc.)
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ usage() {
5
+ cat <<'EOF'
6
+ Usage:
7
+ apply-blank-init.sh --dest <workspace-path> [--force]
8
+
9
+ Applies a "blank first-activation" overlay to an existing workspace:
10
+ - Adds BOOTSTRAP.md (one-time onboarding; to be deleted after verification)
11
+ - Resets MEMORY.md and memory/ daily notes (fresh)
12
+ - Writes a neutral, user-centric ROLE.md
13
+ - Leaves ENVIRONMENT.md and TOOLS.md untouched (keeps OS competence)
14
+
15
+ If --force is not set, existing persona files are left as-is.
16
+ EOF
17
+ }
18
+
19
+ DEST=""
20
+ FORCE=0
21
+
22
+ while [[ $# -gt 0 ]]; do
23
+ case "$1" in
24
+ --dest)
25
+ DEST="$2"; shift 2 ;;
26
+ --force)
27
+ FORCE=1; shift ;;
28
+ -h|--help)
29
+ usage; exit 0 ;;
30
+ *)
31
+ echo "Unknown arg: $1" >&2
32
+ usage
33
+ exit 2
34
+ ;;
35
+ esac
36
+ done
37
+
38
+ if [[ -z "$DEST" ]]; then
39
+ echo "--dest is required" >&2
40
+ usage
41
+ exit 2
42
+ fi
43
+
44
+ BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
45
+
46
+ mkdir -p "$DEST"
47
+
48
+ copy_if_needed() {
49
+ local src="$1"
50
+ local dst="$2"
51
+
52
+ if [[ -e "$dst" && $FORCE -eq 0 ]]; then
53
+ return 0
54
+ fi
55
+
56
+ if [[ -e "$dst" && $FORCE -eq 1 ]]; then
57
+ local ts
58
+ ts="$(date -u +%Y%m%dT%H%M%SZ)"
59
+ mkdir -p "$DEST/.genie-blank-init-backup/$ts"
60
+ cp -a "$dst" "$DEST/.genie-blank-init-backup/$ts/$(basename "$dst")"
61
+ fi
62
+
63
+ cp -a "$src" "$dst"
64
+ }
65
+
66
+ # 1) BOOTSTRAP trigger
67
+ copy_if_needed "$BASE_DIR/assets/BOOTSTRAP.md" "$DEST/BOOTSTRAP.md"
68
+
69
+ # 1b) Blank persona stubs (keep OS competence elsewhere)
70
+ copy_if_needed "$BASE_DIR/assets/SOUL.md" "$DEST/SOUL.md"
71
+ copy_if_needed "$BASE_DIR/assets/IDENTITY.md" "$DEST/IDENTITY.md"
72
+ copy_if_needed "$BASE_DIR/assets/USER.md" "$DEST/USER.md"
73
+
74
+ # 2) Neutral user-centric ROLE
75
+ ROLE_TMP="$DEST/ROLE.md"
76
+ if [[ ! -e "$ROLE_TMP" || $FORCE -eq 1 ]]; then
77
+ cat > "$ROLE_TMP" <<'EOF'
78
+ # ROLE.md
79
+
80
+ ## Current role
81
+ User-centric Genie (blank first activation)
82
+
83
+ ## Mission
84
+ - Help the user with whatever they need.
85
+ - Ask clarifying questions; do not assume project context.
86
+ - Do not take on the Khal mission unless explicitly asked.
87
+
88
+ ## Notes
89
+ - This workspace is intentionally "fresh". BOOTSTRAP.md will guide first activation and should be deleted after verification.
90
+ EOF
91
+ fi
92
+
93
+ # 3) Reset long-term memory file
94
+ MEM="$DEST/MEMORY.md"
95
+ if [[ ! -e "$MEM" || $FORCE -eq 1 ]]; then
96
+ cat > "$MEM" <<'EOF'
97
+ # MEMORY.md
98
+
99
+ (Blank — first activation. Add only enduring preferences/decisions.)
100
+ EOF
101
+ fi
102
+
103
+ # 4) Reset daily notes directory
104
+ mkdir -p "$DEST/memory"
105
+ if [[ $FORCE -eq 1 ]]; then
106
+ # keep backups, but empty the folder contents
107
+ ts="$(date -u +%Y%m%dT%H%M%SZ)"
108
+ mkdir -p "$DEST/.genie-blank-init-backup/$ts/memory"
109
+ shopt -s nullglob
110
+ for f in "$DEST/memory"/*; do
111
+ cp -a "$f" "$DEST/.genie-blank-init-backup/$ts/memory/" || true
112
+ rm -f "$f" || true
113
+ done
114
+ fi
115
+
116
+ echo "Applied blank-init overlay to: $DEST"
117
+ echo "Next: start the agent in that workspace; it should follow BOOTSTRAP.md then delete it once verified."
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: "forge"
3
+ description: "Use when executing an approved wish plan - dispatches implementor subagents per task with two-stage review (spec + quality) and fix loops"
4
+ ---
5
+
6
+ # Forge - Execute the Plan
7
+
8
+ ## Overview
9
+
10
+ Execute an approved wish by working through each task sequentially. For each task: dispatch an implementor, run spec review, run quality review, fix if needed, mark complete.
11
+
12
+ **Never implements directly. Always dispatches subagents.**
13
+
14
+ ---
15
+
16
+ ## The Flow
17
+
18
+ ### 1. Load Wish
19
+
20
+ ```
21
+ Read .genie/wishes/<slug>/wish.md
22
+ Parse execution groups and tasks
23
+ Verify wish status is DRAFT or IN_PROGRESS
24
+ Update wish status to IN_PROGRESS
25
+ ```
26
+
27
+ ### 2. Find Next Task
28
+
29
+ ```
30
+ TaskList → find next unblocked pending task
31
+ If no tasks remain → proceed to handoff
32
+ TaskUpdate → mark task as in_progress
33
+ ```
34
+
35
+ ### 3. Dispatch Implementor
36
+
37
+ Launch a subagent via the Task tool:
38
+
39
+ ```
40
+ Task tool dispatch:
41
+ subagent_type: general-purpose
42
+ prompt: |
43
+ You are the implementor agent.
44
+
45
+ Read the wish document at: .genie/wishes/<slug>/wish.md
46
+
47
+ Your task: [task description from TaskGet]
48
+
49
+ Acceptance criteria:
50
+ - [criteria from wish document]
51
+
52
+ Follow TDD discipline:
53
+ 1. Write failing test (RED)
54
+ 2. Implement to pass (GREEN)
55
+ 3. Clean up (REFINE)
56
+
57
+ Validation command: [from wish]
58
+
59
+ When done, report what you implemented and verification results.
60
+ ```
61
+
62
+ **The implementor reads the wish from disk** (not from prompt injection). The prompt tells it WHERE to read, not WHAT to do in full detail.
63
+
64
+ ### 4. Spec Review
65
+
66
+ After implementor completes, dispatch spec-reviewer:
67
+
68
+ ```
69
+ Task tool dispatch:
70
+ subagent_type: general-purpose
71
+ prompt: |
72
+ You are the spec-reviewer agent.
73
+
74
+ Wish: .genie/wishes/<slug>/wish.md
75
+ Task: [task name]
76
+ Acceptance criteria: [from wish]
77
+
78
+ Check each acceptance criterion. Verdict: PASS or FAIL.
79
+ If FAIL, explain what's missing and how to fix it.
80
+ ```
81
+
82
+ **If FAIL:** Dispatch implementor again with the gap feedback. Loop up to 3 times.
83
+
84
+ ### 5. Quality Review
85
+
86
+ After spec-reviewer PASSES, dispatch quality-reviewer:
87
+
88
+ ```
89
+ Task tool dispatch:
90
+ subagent_type: general-purpose
91
+ prompt: |
92
+ You are the quality-reviewer agent.
93
+
94
+ Review the changes made for task: [task name]
95
+ Check: security, maintainability, performance, correctness.
96
+
97
+ Verdict: SHIP or FIX-FIRST with severity-tagged findings.
98
+ ```
99
+
100
+ **If FIX-FIRST:** Dispatch implementor with the quality findings. Loop up to 2 times.
101
+
102
+ ### 6. Mark Task Complete
103
+
104
+ ```
105
+ TaskUpdate → mark task as completed
106
+ Update wish document checkboxes if applicable
107
+ ```
108
+
109
+ ### 7. Next Task
110
+
111
+ Return to step 2 until all tasks are complete.
112
+
113
+ ### 8. Handoff
114
+
115
+ ```
116
+ All tasks complete.
117
+ Output: "All forge tasks complete. Run /forge-review for validation."
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Specialist Routing
123
+
124
+ The implementor handles most tasks. For specialized needs, adjust the dispatch:
125
+
126
+ | Task Type | Agent | When |
127
+ |-----------|-------|------|
128
+ | Implementation | implementor | Default for all coding tasks |
129
+ | Test-only | tests | When task is purely about test coverage |
130
+ | Bug fix | fix | When task is fixing a specific bug |
131
+ | Refactoring | refactor | When task is purely structural improvement |
132
+ | Git operations | git | When task involves branch/commit/push |
133
+
134
+ ---
135
+
136
+ ## Fix Loop Protocol
137
+
138
+ ```
139
+ Max spec review loops: 3
140
+ Max quality review loops: 2
141
+
142
+ If max loops exceeded:
143
+ - Mark task as BLOCKED
144
+ - Create new task describing the unresolved issue
145
+ - Continue to next unblocked task
146
+ - Report blocked task in handoff summary
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Key Principles
152
+
153
+ - **Never implement directly** - Always dispatch subagents via Task tool
154
+ - **Implementor reads wish from disk** - Don't inject the entire wish into the prompt
155
+ - **Spec before quality** - Verify correctness before polish
156
+ - **Fix loops are bounded** - Don't loop forever, escalate blocked tasks
157
+ - **One task at a time** - Sequential execution, clear state tracking
158
+ - **Update wish document** - Check off criteria as they're verified
159
+
160
+ ---
161
+
162
+ ## Never Do
163
+
164
+ - Implement code directly (dispatch subagents)
165
+ - Skip spec review after implementation
166
+ - Skip quality review after spec passes
167
+ - Loop more than 3 times on spec review
168
+ - Loop more than 2 times on quality review
169
+ - Move to next task before current one passes both reviews
170
+ - Modify the wish document's scope (that's wish skill territory)
171
+ - Dispatch parallel implementors for dependent tasks
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Jan 30, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #7318 | 10:22 AM | 🔵 | Genie-Plan-Review Skill for Wish Validation | ~489 |
11
+ </claude-mem-context>
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: "plan-review"
3
+ description: "Validate a Genie wish document (structure, scope boundaries, acceptance criteria, validation commands). Use after creating or editing .genie/wishes/<slug>/wish.md to catch missing sections before forge/review."
4
+ ---
5
+
6
+ # Plan Review — Validate Wish Documents
7
+
8
+ ## What this does
9
+
10
+ Perform a fast structural/quality check on Genie wish documents (`.genie/wishes/**/wish.md`).
11
+
12
+ ## How to run
13
+
14
+ 1) Identify the wish file you want to validate.
15
+ 2) Check the items below and report **PASS** or **NEEDS ATTENTION** with a short fix list.
16
+
17
+ ## Validation checklist
18
+
19
+ ### Structure completeness
20
+ - [ ] Has `## Summary`
21
+ - [ ] Has `## Scope` with `### IN` and `### OUT` (OUT must not be empty)
22
+ - [ ] Has `## Success Criteria` with checkbox items (`- [ ]`)
23
+ - [ ] Has at least one execution group (e.g. `## Execution Groups` and at least one `### Group …`)
24
+
25
+ ### Task quality (per execution group)
26
+ - [ ] Each group has **Acceptance Criteria:** with checkboxes
27
+ - [ ] Each group has **Validation:** with a concrete command
28
+ - [ ] Tasks are specific (avoid “implement everything”)
29
+
30
+ ### Scope boundaries
31
+ - [ ] OUT contains explicit exclusions
32
+ - [ ] IN and OUT do not contradict
33
+
34
+ ## Output format
35
+
36
+ If all checks pass:
37
+
38
+ ```
39
+ Plan review: PASS — Wish document is well-structured.
40
+ ```
41
+
42
+ If checks fail:
43
+
44
+ ```
45
+ Plan review: NEEDS ATTENTION
46
+ - <actionable missing/weak item>
47
+ - <actionable missing/weak item>
48
+ ```
49
+
50
+ ## Never do
51
+ - Do not modify the wish document (only report)
52
+ - Do not block on style/naming
53
+ - Keep it fast (seconds, not minutes)
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: "review"
3
+ description: "Use when all forge tasks are complete and work needs final validation - produces pass/fail verdict with categorized gaps"
4
+ ---
5
+
6
+ # Review - Final Validation
7
+
8
+ ## Overview
9
+
10
+ After all forge tasks complete, run a final review of the entire wish. Check every success criterion, run integration tests, optionally run browser tests, and produce a verdict.
11
+
12
+ **Three verdicts: SHIP / FIX-FIRST / BLOCKED**
13
+
14
+ ---
15
+
16
+ ## The Flow
17
+
18
+ ### 1. Load Wish
19
+
20
+ ```
21
+ Read .genie/wishes/<slug>/wish.md
22
+ Parse all success criteria
23
+ Verify all forge tasks are marked complete
24
+ ```
25
+
26
+ ### 2. Wish Audit (Criterion by Criterion)
27
+
28
+ For each success criterion in the wish document:
29
+
30
+ - **PASS**: Evidence exists. Describe the evidence.
31
+ - **FAIL**: Not met. Categorize the gap.
32
+
33
+ **Gap Categories:**
34
+
35
+ | Severity | Meaning | Blocks Ship? |
36
+ |----------|---------|--------------|
37
+ | CRITICAL | Broken functionality, security flaw, data loss | Yes |
38
+ | HIGH | Missing feature, major bug, test failure | Yes |
39
+ | MEDIUM | Missing edge case, incomplete docs | No |
40
+ | LOW | Style, naming, minor polish | No |
41
+
42
+ ### 3. Integration Verification
43
+
44
+ Run validation commands from the wish document:
45
+
46
+ ```
47
+ For each execution group:
48
+ Run its validation command
49
+ Record: PASS or FAIL with output
50
+ ```
51
+
52
+ ### 4. Browser Tests (Optional)
53
+
54
+ If the wish involves user-facing changes and agent-browser is available:
55
+
56
+ ```
57
+ Use agent-browser to:
58
+ - Navigate to relevant pages
59
+ - Verify user-visible behavior
60
+ - Capture screenshots as evidence
61
+ ```
62
+
63
+ **If agent-browser is not available:** Skip gracefully. Note in report: "Browser tests skipped - agent-browser not available."
64
+
65
+ ### 5. Verdict
66
+
67
+ **SHIP** - All criteria pass. No CRITICAL or HIGH gaps.
68
+
69
+ ```
70
+ Conditions:
71
+ - Zero CRITICAL gaps
72
+ - Zero HIGH gaps
73
+ - All validation commands pass
74
+ - MEDIUM/LOW gaps are advisory only
75
+ ```
76
+
77
+ **FIX-FIRST** - Fixable issues found. Return to forge.
78
+
79
+ ```
80
+ Conditions:
81
+ - One or more HIGH gaps (fixable)
82
+ - Or validation commands failing
83
+ - Provide specific fix list for /genie:forge
84
+ ```
85
+
86
+ **BLOCKED** - Fundamental issues. Return to wish.
87
+
88
+ ```
89
+ Conditions:
90
+ - CRITICAL gaps that require scope changes
91
+ - Or architectural problems that can't be fixed in forge
92
+ - Provide specific issues requiring wish revision
93
+ ```
94
+
95
+ ### 6. Write Results
96
+
97
+ Update the wish document with review results:
98
+
99
+ ```markdown
100
+ ## Review Results
101
+
102
+ **Verdict:** SHIP | FIX-FIRST | BLOCKED
103
+ **Date:** YYYY-MM-DD
104
+
105
+ ### Criteria Check
106
+ - [x] Criterion 1 - PASS: [evidence]
107
+ - [ ] Criterion 2 - FAIL (HIGH): [gap description]
108
+
109
+ ### Validation Commands
110
+ - [x] `command 1` - PASS
111
+ - [ ] `command 2` - FAIL: [output]
112
+
113
+ ### Browser Tests
114
+ - [x] Page loads correctly
115
+ - Skipped: agent-browser not available
116
+
117
+ ### Gaps
118
+ | # | Severity | Description | Fix |
119
+ |---|----------|-------------|-----|
120
+ | 1 | HIGH | Missing error handling | Add try/catch in handler.ts |
121
+ | 2 | MEDIUM | No edge case test | Add test for empty input |
122
+
123
+ ### Recommendation
124
+ [One paragraph: what to do next]
125
+ ```
126
+
127
+ ---
128
+
129
+ ## After Review
130
+
131
+ **If SHIP:** Work is done. Inform the user.
132
+
133
+ **If FIX-FIRST:**
134
+ ```
135
+ "Review found fixable issues. Run /genie:forge to address:
136
+ 1. [gap 1]
137
+ 2. [gap 2]
138
+ Then run /genie:review again."
139
+ ```
140
+
141
+ **If BLOCKED:**
142
+ ```
143
+ "Review found fundamental issues requiring scope changes.
144
+ Revise the wish document to address:
145
+ 1. [issue 1]
146
+ 2. [issue 2]
147
+ Then run /genie:forge and /genie:review again."
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Key Principles
153
+
154
+ - **Every criterion checked** - No skipping, no "probably fine"
155
+ - **Evidence required** - PASS needs proof, not assumption
156
+ - **Gaps categorized** - Severity determines whether it blocks
157
+ - **Actionable feedback** - Every FAIL includes how to fix
158
+ - **Browser tests graceful** - Skip if agent-browser unavailable, don't fail
159
+ - **Results written to wish** - Review results live in the wish document
160
+
161
+ ---
162
+
163
+ ## Never Do
164
+
165
+ - Declare SHIP with CRITICAL or HIGH gaps
166
+ - Skip validation commands
167
+ - Mark criteria PASS without evidence
168
+ - Re-implement fixes during review (that's forge's job)
169
+ - Change scope during review (that's wish's job)
170
+ - Block on MEDIUM or LOW gaps
171
+ - Forget to write results back to the wish document