@automagik/genie 0.260202.1833 → 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 (108) hide show
  1. package/.beads/README.md +81 -0
  2. package/.beads/config.yaml +67 -0
  3. package/.beads/interactions.jsonl +0 -0
  4. package/.beads/issues.jsonl +9 -0
  5. package/.beads/metadata.json +4 -0
  6. package/.claude/skills/brainstorm/SKILL.md +53 -0
  7. package/.claude/skills/genie-base/SKILL.md +66 -0
  8. package/.claude/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  9. package/.claude/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  10. package/.claude/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  11. package/.claude/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  12. package/.claude/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  13. package/.claude/skills/genie-base/assets/workspace/ROLE.md +14 -0
  14. package/.claude/skills/genie-base/assets/workspace/SOUL.md +36 -0
  15. package/.claude/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  16. package/.claude/skills/genie-base/assets/workspace/USER.md +13 -0
  17. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-30.md +6 -0
  18. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-31.md +16 -0
  19. package/.claude/skills/genie-base/assets/workspace/memory/882c22be-9710-41c1-91f8-ed82947ef6ce.txt +1 -0
  20. package/.claude/skills/genie-base/scripts/install-workspace.sh +107 -0
  21. package/.claude/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  22. package/.claude/skills/genie-blank-init/SKILL.md +37 -0
  23. package/.claude/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  24. package/.claude/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  25. package/.claude/skills/genie-blank-init/assets/SOUL.md +10 -0
  26. package/.claude/skills/genie-blank-init/assets/USER.md +9 -0
  27. package/.claude/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  28. package/.claude/skills/genie-forge/SKILL.md +171 -0
  29. package/.claude/skills/genie-plan-review/CLAUDE.md +11 -0
  30. package/.claude/skills/genie-plan-review/SKILL.md +53 -0
  31. package/.claude/skills/genie-review/SKILL.md +171 -0
  32. package/.claude/skills/genie-wish/SKILL.md +141 -0
  33. package/.claude-plugin/marketplace.json +18 -0
  34. package/.genie/.gitkeep +3 -0
  35. package/.genie/backlog/hooks-v2.md +82 -0
  36. package/.genie/wishes/upgrade-brainstorm-handoff/wish.md +124 -0
  37. package/.gitattributes +3 -0
  38. package/AGENTS.md +75 -0
  39. package/bun.lock +55 -0
  40. package/dist/claudio.js +1 -1
  41. package/dist/genie.js +1 -1
  42. package/dist/term.js +123 -99
  43. package/docs/CO-ORCHESTRATION-GUIDE.md +368 -0
  44. package/package.json +5 -1
  45. package/plugin/.claude-plugin/plugin.json +18 -0
  46. package/plugin/README.md +120 -0
  47. package/plugin/agents/implementor.md +92 -0
  48. package/plugin/agents/quality-reviewer.md +113 -0
  49. package/plugin/agents/spec-reviewer.md +90 -0
  50. package/plugin/hooks/hooks.json +3 -0
  51. package/plugin/references/review-criteria.md +72 -0
  52. package/plugin/references/wish-template.md +92 -0
  53. package/plugin/scripts/genie.cjs +141 -0
  54. package/plugin/scripts/smart-install.js +308 -0
  55. package/plugin/scripts/src/install-genie-cli.sh +120 -0
  56. package/plugin/scripts/src/validate-completion.ts +142 -0
  57. package/plugin/scripts/src/validate-wish.ts +137 -0
  58. package/plugin/scripts/term.cjs +229 -0
  59. package/plugin/scripts/validate-completion.cjs +16 -0
  60. package/plugin/scripts/validate-wish.cjs +17 -0
  61. package/plugin/scripts/worker-service.cjs +28 -0
  62. package/plugin/skills/brainstorm/SKILL.md +106 -0
  63. package/plugin/skills/forge/SKILL.md +171 -0
  64. package/plugin/skills/genie-base/SKILL.md +99 -0
  65. package/plugin/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  66. package/plugin/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  67. package/plugin/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  68. package/plugin/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  69. package/plugin/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  70. package/plugin/skills/genie-base/assets/workspace/ROLE.md +14 -0
  71. package/plugin/skills/genie-base/assets/workspace/SOUL.md +36 -0
  72. package/plugin/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  73. package/plugin/skills/genie-base/assets/workspace/USER.md +13 -0
  74. package/plugin/skills/genie-base/scripts/install-workspace.sh +107 -0
  75. package/plugin/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  76. package/plugin/skills/genie-blank-init/SKILL.md +73 -0
  77. package/plugin/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  78. package/plugin/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  79. package/plugin/skills/genie-blank-init/assets/SOUL.md +10 -0
  80. package/plugin/skills/genie-blank-init/assets/USER.md +9 -0
  81. package/plugin/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  82. package/plugin/skills/genie-cli-dev/CLAUDE.md +19 -0
  83. package/plugin/skills/genie-cli-dev/SKILL.md +292 -0
  84. package/plugin/skills/plan-review/SKILL.md +101 -0
  85. package/plugin/skills/review/SKILL.md +221 -0
  86. package/plugin/skills/wish/SKILL.md +110 -0
  87. package/plugin/skills/work-orchestration/SKILL.md +110 -0
  88. package/scripts/build.js +132 -0
  89. package/scripts/smart-install.js +308 -0
  90. package/scripts/sync.js +134 -0
  91. package/src/lib/beads-registry.ts +595 -0
  92. package/src/lib/orchestrator/event-monitor.ts +2 -0
  93. package/src/lib/skill-loader.ts +215 -0
  94. package/src/lib/tmux.ts +30 -11
  95. package/src/lib/version.ts +1 -1
  96. package/src/lib/worker-registry.ts +10 -0
  97. package/src/services/worker-service.ts +351 -0
  98. package/src/term-commands/close.ts +48 -3
  99. package/src/term-commands/create.ts +95 -0
  100. package/src/term-commands/daemon.ts +176 -0
  101. package/src/term-commands/kill.ts +56 -2
  102. package/src/term-commands/orchestrate.ts +3 -2
  103. package/src/term-commands/send.ts +43 -15
  104. package/src/term-commands/spawn.ts +446 -0
  105. package/src/term-commands/split.ts +20 -8
  106. package/src/term-commands/work.ts +279 -37
  107. package/src/term-commands/workers.ts +36 -2
  108. package/src/term.ts +120 -7
@@ -0,0 +1,16 @@
1
+ # 2026-01-31
2
+
3
+ - Repaired OpenClaw memory_search by adding OpenAI API key + openai:default auth profile; reindexed memory successfully.
4
+ - Standardized collaboration around tmux + genie-cli: shared session migrated from `khal` to `genie` (khal killed after migration). Windows restored in `genie`: chief-of-khal, genie-cli, ClaudeResearch, AgentBuilder.
5
+ - Updated genie-cli toolchain symlinks (term/claudio) after path breakage; adopted rule: "open Claude" == run `claudio`.
6
+ - Created `claudio` profile `antigravity-opus` (100% gemini-claude-opus-4-5-thinking) and set as default during AgentBuilder work.
7
+ - Investigated Claude Code closing: observed `killed claude` likely from low memory/no swap; later confirmed memory increased to 8GB but swap still 0 in-container.
8
+ - Implemented tmux session restore on reboot: snapshot saved to `~/.config/tmux-genie/state.json`; restore script `~/.local/bin/tmux-genie-restore`; systemd user service `tmux-genie.service` enabled (uses TMUX_BIN=/home/linuxbrew/.linuxbrew/bin/tmux). Configured to restore windows + cwd only (does not auto-open claudio).
9
+
10
+ - Felipe set a rule: always work on the Khal project inside the shared tmux session named `genie` (use a window named `khal`).
11
+ - Added a `khal` zsh function in ~/.zshrc to create/attach/switch to the correct session/window and start in /home/genie/workspace/khal.
12
+ - Felipe: Genie is getting a new body (OpenClaw); prior "body" left in a context folder to be slowly absorbed/cleaned up as we assess what’s still useful.
13
+ - Process: Felipe runs a brainstorm phase before using the Wish framework; uses two Claude Code sessions side-by-side (left: Opus 4.5, right: Gemini 3 Pro) as team members.
14
+ - Workflow: Felipe uses the "council" (parallel personas/LLMs) by prompting them with the same prompt and collecting votes; Felipe + Genie act as reviewers/improvers.
15
+ - Council implementation lives in khal repo under `.claude/agents/council.md` with 10 member agents in `.claude/agents/council/*.md` and smart routing by topic.
16
+ - Rule: Genie can inspect/understand the codebase, but should delegate planning + coding execution to the Claude Code panes in tmux (khal-demo).
@@ -0,0 +1 @@
1
+ Então, como você pode ver, a tentativa de startar um cloud numa aba falhou, tem um problema aí que tá impedindo ele de startar, então eu gostaria que você divulgasse isso e descobrisse o motivo que isso aconteceu.
@@ -0,0 +1,107 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ usage() {
5
+ cat <<'EOF'
6
+ Usage:
7
+ install-workspace.sh --dest <workspace-path> [--force]
8
+
9
+ Copies the Genie base workspace template from this skill into the destination.
10
+
11
+ - If a file already exists and --force is not set, it will be left untouched.
12
+ - If --force is set, existing files will be backed up then overwritten.
13
+
14
+ EOF
15
+ }
16
+
17
+ DEST=""
18
+ FORCE=0
19
+
20
+ while [[ $# -gt 0 ]]; do
21
+ case "$1" in
22
+ --dest)
23
+ DEST="$2"; shift 2 ;;
24
+ --force)
25
+ FORCE=1; shift ;;
26
+ -h|--help)
27
+ usage; exit 0 ;;
28
+ *)
29
+ echo "Unknown arg: $1" >&2
30
+ usage
31
+ exit 2
32
+ ;;
33
+ esac
34
+ done
35
+
36
+ if [[ -z "$DEST" ]]; then
37
+ echo "--dest is required" >&2
38
+ usage
39
+ exit 2
40
+ fi
41
+
42
+ SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/assets/workspace"
43
+
44
+ if [[ ! -d "$SRC_DIR" ]]; then
45
+ echo "Missing template dir: $SRC_DIR" >&2
46
+ exit 1
47
+ fi
48
+
49
+ mkdir -p "$DEST"
50
+
51
+ TS="$(date -u +%Y%m%dT%H%M%SZ)"
52
+ BACKUP_DIR="$DEST/.genie-base-backup/$TS"
53
+
54
+ backup_and_copy() {
55
+ local rel="$1"
56
+ local src="$SRC_DIR/$rel"
57
+ local dst="$DEST/$rel"
58
+
59
+ if [[ -d "$src" ]]; then
60
+ # directory copy
61
+ if [[ -e "$dst" && $FORCE -eq 0 ]]; then
62
+ return 0
63
+ fi
64
+ if [[ -e "$dst" && $FORCE -eq 1 ]]; then
65
+ mkdir -p "$BACKUP_DIR/$(dirname "$rel")"
66
+ mv "$dst" "$BACKUP_DIR/$rel"
67
+ fi
68
+ mkdir -p "$(dirname "$dst")"
69
+ cp -a "$src" "$dst"
70
+ return 0
71
+ fi
72
+
73
+ # file copy
74
+ if [[ -e "$dst" && $FORCE -eq 0 ]]; then
75
+ return 0
76
+ fi
77
+ if [[ -e "$dst" && $FORCE -eq 1 ]]; then
78
+ mkdir -p "$BACKUP_DIR/$(dirname "$rel")"
79
+ cp -a "$dst" "$BACKUP_DIR/$rel"
80
+ fi
81
+ mkdir -p "$(dirname "$dst")"
82
+ cp -a "$src" "$dst"
83
+ }
84
+
85
+ # Core workspace files
86
+ FILES=(
87
+ "AGENTS.md"
88
+ "SOUL.md"
89
+ "USER.md"
90
+ "TOOLS.md"
91
+ "MEMORY.md"
92
+ "HEARTBEAT.md"
93
+ "IDENTITY.md"
94
+ "ROLE.md"
95
+ "ENVIRONMENT.md"
96
+ "memory"
97
+ )
98
+
99
+ for f in "${FILES[@]}"; do
100
+ backup_and_copy "$f"
101
+ done
102
+
103
+ if [[ -d "$BACKUP_DIR" ]]; then
104
+ echo "Backup (if any overwrites): $BACKUP_DIR"
105
+ fi
106
+
107
+ echo "Installed Genie base workspace template into: $DEST"
@@ -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)