@jenga-ai/agent 2.0.0 → 3.1.0

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 (177) hide show
  1. package/README.md +82 -243
  2. package/agents/developer.md +5 -5
  3. package/agents/scrum-master.md +23 -23
  4. package/agents/tester.md +5 -5
  5. package/bin/jenga.js +10 -0
  6. package/hooks/copilot_session_end.sh +7 -3
  7. package/hooks/prompt_router_helper.js +17 -5
  8. package/lib/commands/doctor.js +351 -0
  9. package/lib/commands/init.js +16 -0
  10. package/lib/generate-copilot-hooks.js +116 -0
  11. package/lib/generate-skill-allow-list.js +9 -3
  12. package/lib/legacy-shipped-paths.json +336 -0
  13. package/lib/postinstall-manifest.js +469 -0
  14. package/lib/skill-allow-list.json +2 -3
  15. package/package.json +16 -25
  16. package/scripts/apply-j-prefix.sh +25 -12
  17. package/scripts/generate-j-alias.sh +333 -0
  18. package/scripts/generate-legacy-shipped-paths.js +248 -0
  19. package/scripts/postinstall.js +205 -2
  20. package/scripts/verify-legacy-seed-reconcile.sh +254 -0
  21. package/scripts/verify-postinstall-reconcile.sh +392 -0
  22. package/skills/{brainstorm → j-brainstorm}/SKILL.md +9 -2
  23. package/skills/{btw → j-btw}/SKILL.md +9 -2
  24. package/skills/{clearify → j-clearify}/SKILL.md +9 -2
  25. package/skills/{close-story → j-close-story}/SKILL.md +17 -10
  26. package/skills/{close-story → j-close-story}/scripts/check-privatized.sh +2 -2
  27. package/skills/{close-story → j-close-story}/scripts/check-story-closeable.sh +1 -1
  28. package/skills/{close-story → j-close-story}/scripts/extract-task-diff-stats.sh +1 -1
  29. package/skills/{commit → j-commit}/SKILL.md +9 -2
  30. package/skills/j-continue/SKILL.md +36 -0
  31. package/skills/{deep-dive → j-deep-dive}/SKILL.md +9 -8
  32. package/skills/{dev-done → j-dev-done}/SKILL.md +11 -4
  33. package/skills/{dev-done → j-dev-done}/scripts/classify-commit-outcome.sh +4 -4
  34. package/skills/{distribute → j-distribute}/SKILL.md +17 -10
  35. package/skills/{distribute → j-distribute}/scripts/distribute-changes.sh +1 -1
  36. package/skills/{do → j-do}/SKILL.md +12 -5
  37. package/skills/{doc → j-doc}/README.md +5 -5
  38. package/skills/{doc → j-doc}/SKILL.md +15 -8
  39. package/skills/{doc → j-doc}/authoring-notes.md +1 -1
  40. package/skills/{doc-sync → j-doc-sync}/SKILL.md +9 -2
  41. package/skills/{dooo → j-dooo}/SKILL.md +9 -2
  42. package/skills/j-error/SKILL.md +36 -0
  43. package/skills/{evaluate → j-evaluate}/SKILL.md +9 -2
  44. package/skills/j-examplify/SKILL.md +49 -0
  45. package/skills/{help → j-help}/SKILL.md +9 -2
  46. package/skills/{idea → j-idea}/SKILL.md +10 -3
  47. package/skills/{idea → j-idea}/assets/idea_handoff_template.md +1 -1
  48. package/skills/{improve → j-improve}/SKILL.md +9 -2
  49. package/skills/j-init/SKILL.md +2 -2
  50. package/skills/j-jbp/SKILL.md +32 -0
  51. package/skills/j-lgtm/SKILL.md +28 -0
  52. package/skills/{pi-plan → j-pi-plan}/SKILL.md +10 -3
  53. package/skills/{proceed → j-proceed}/SKILL.md +9 -2
  54. package/skills/{publish → j-publish}/SKILL.md +47 -40
  55. package/skills/{publish → j-publish}/adapters/droplet.md +1 -1
  56. package/skills/{publish → j-publish}/adapters/mobile-ios.md +3 -3
  57. package/skills/{publish → j-publish}/adapters/npm-ci.md +3 -3
  58. package/skills/{publish → j-publish}/adapters/npm.md +8 -8
  59. package/skills/{publish → j-publish}/assets/ci-contract.md +2 -2
  60. package/skills/{publish → j-publish}/schemas/publish.schema.json +1 -1
  61. package/skills/{publish → j-publish}/scripts/npm_stage_inspect.sh +34 -1
  62. package/skills/{publish → j-publish}/scripts/npm_stage_pipeline.sh +9 -4
  63. package/skills/{publish → j-publish}/scripts/publish_deploy.sh +4 -4
  64. package/skills/{publish → j-publish}/scripts/validate_npm_stage_env.sh +1 -1
  65. package/skills/{publish → j-publish}/wizards/droplet.md +1 -1
  66. package/skills/{publish → j-publish}/wizards/mobile-ios.md +1 -1
  67. package/skills/{publish → j-publish}/wizards/npm-ci.md +1 -1
  68. package/skills/{publish → j-publish}/wizards/npm.md +1 -1
  69. package/skills/{reconcile → j-reconcile}/SKILL.md +12 -5
  70. package/skills/{reconcile → j-reconcile}/scripts/detect-unlinked-code.sh +2 -2
  71. package/skills/{reconcile → j-reconcile}/scripts/resolve-reconcile-scope.sh +3 -3
  72. package/skills/{reconcile-origin → j-reconcile-origin}/SKILL.md +13 -6
  73. package/skills/{redo → j-redo}/SKILL.md +9 -2
  74. package/skills/{skillify → j-skillify}/SKILL.md +10 -3
  75. package/skills/{spinoff → j-spinoff}/SKILL.md +9 -2
  76. package/skills/{status → j-status}/SKILL.md +9 -2
  77. package/skills/{todo → j-todo}/SKILL.md +10 -3
  78. package/skills/{todo → j-todo}/assets/todo_handoff_template.md +1 -1
  79. package/skills/{todo → j-todo}/scripts/add_trivial_task.sh +3 -3
  80. package/skills/{todo → j-todo}/scripts/update_story_tasks.py +2 -2
  81. package/skills/{uncharted → j-uncharted}/SKILL.md +35 -28
  82. package/skills/{uncharted → j-uncharted}/assets/UNDERSTANDING_DOC_TEMPLATE.md +2 -2
  83. package/skills/{uncharted → j-uncharted}/scripts/detect-dependencies.sh +1 -1
  84. package/skills/{uncharted → j-uncharted}/scripts/detect-tests.sh +1 -1
  85. package/skills/{uncharted → j-uncharted}/scripts/directory-triage.sh +3 -3
  86. package/skills/{uncharted → j-uncharted}/scripts/elicitation-state.sh +3 -3
  87. package/skills/{uncharted → j-uncharted}/scripts/enumerate-target.sh +1 -1
  88. package/skills/{uncharted → j-uncharted}/scripts/import-source.sh +1 -1
  89. package/skills/{uncharted → j-uncharted}/scripts/inspect-provenance.sh +1 -1
  90. package/skills/{uncharted → j-uncharted}/scripts/resolve-segment-target.sh +5 -5
  91. package/skills/{uncharted → j-uncharted}/scripts/run-engine.sh +1 -1
  92. package/skills/{uncharted → j-uncharted}/scripts/validate-proposed-items.sh +2 -2
  93. package/skills/{uncharted → j-uncharted}/scripts/write-backfilled-epics.sh +1 -1
  94. package/skills/j-wtf/SKILL.md +27 -0
  95. package/skills/jenga/SKILL.md +1 -1
  96. package/skills/jenga-permission-level/SKILL.md +1 -1
  97. package/templates/SCRUM_BOARD_SCHEMA.md +1 -1
  98. package/templates/agent-context.md.tpl +10 -10
  99. package/templates/copilot-instructions.md.tpl +89 -19
  100. package/skills/continue/SKILL.md +0 -29
  101. package/skills/error/SKILL.md +0 -29
  102. package/skills/examplify/SKILL.md +0 -42
  103. package/skills/init/SKILL.md +0 -155
  104. package/skills/init/assets/scope-thresholds_template.json +0 -7
  105. package/skills/init/assets/strategy_stub_template.md +0 -38
  106. package/skills/init/assets/workflow_template.json +0 -30
  107. package/skills/init/scripts/apply-project-visibility.sh +0 -176
  108. package/skills/init/scripts/detect-existing-codebase.sh +0 -166
  109. package/skills/init/scripts/init.sh +0 -116
  110. package/skills/jbp/SKILL.md +0 -25
  111. package/skills/lgtm/SKILL.md +0 -21
  112. package/skills/skillify/assets/init-new/assets/.gitignore_template +0 -15
  113. package/skills/skillify/assets/init-new/assets/PROJECT_SUMMARY_template.md +0 -13
  114. package/skills/skillify/assets/init-new/assets/directory_structure.txt +0 -14
  115. package/skills/skillify/assets/init-new/assets/test-config_template.json +0 -4
  116. package/skills/wtf/SKILL.md +0 -20
  117. /package/skills/{close-story → j-close-story}/scripts/compute-scope-divergence.sh +0 -0
  118. /package/skills/{close-story → j-close-story}/scripts/extract-diff-stats.sh +0 -0
  119. /package/skills/{close-story → j-close-story}/scripts/update-task-frontmatter.sh +0 -0
  120. /package/skills/{commit → j-commit}/assets/user_instructions_template.md +0 -0
  121. /package/skills/{distribute → j-distribute}/CONFIG_SCHEMA.md +0 -0
  122. /package/skills/{distribute → j-distribute}/scripts/check-version.sh +0 -0
  123. /package/skills/{distribute → j-distribute}/scripts/commit-version-bump.sh +0 -0
  124. /package/skills/{do → j-do}/assets/intent-vs-diff-prompt.md +0 -0
  125. /package/skills/{do → j-do}/assets/sender_template.json +0 -0
  126. /package/skills/{doc → j-doc}/assets/path-objectives.yaml +0 -0
  127. /package/skills/{doc → j-doc}/scripts/resolve_last_update.py +0 -0
  128. /package/skills/{doc-sync → j-doc-sync}/assets/default_excludes.txt +0 -0
  129. /package/skills/{doc-sync → j-doc-sync}/assets/doc_targets.md +0 -0
  130. /package/skills/{evaluate → j-evaluate}/assets/evaluation_invokation_template.yml +0 -0
  131. /package/skills/{evaluate → j-evaluate}/assets/evaluation_rapport_template.md +0 -0
  132. /package/skills/{idea → j-idea}/assets/idea_template.md +0 -0
  133. /package/skills/{pi-plan → j-pi-plan}/assets/epic.json +0 -0
  134. /package/skills/{pi-plan → j-pi-plan}/assets/story_template.md +0 -0
  135. /package/skills/{publish → j-publish}/assets/ExportOptions.plist.template +0 -0
  136. /package/skills/{publish → j-publish}/assets/ownership-matrix.md +0 -0
  137. /package/skills/{publish → j-publish}/assets/publish.example.json +0 -0
  138. /package/skills/{publish → j-publish}/assets/publish.example.npm-ci.json +0 -0
  139. /package/skills/{publish → j-publish}/assets/publish.example.npm.json +0 -0
  140. /package/skills/{publish → j-publish}/assets/secrets-guide.md +0 -0
  141. /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-minimal.json +0 -0
  142. /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-empty-secrets.json +0 -0
  143. /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-workflow-path.json +0 -0
  144. /package/skills/{publish → j-publish}/scripts/check_target_config.sh +0 -0
  145. /package/skills/{publish → j-publish}/scripts/droplet_pipeline.sh +0 -0
  146. /package/skills/{publish → j-publish}/scripts/finalize_changelog.sh +0 -0
  147. /package/skills/{publish → j-publish}/scripts/generate_release_notes.sh +0 -0
  148. /package/skills/{publish → j-publish}/scripts/ios_pipeline.sh +0 -0
  149. /package/skills/{publish → j-publish}/scripts/npm_ci_pipeline.sh +0 -0
  150. /package/skills/{publish → j-publish}/scripts/npm_pipeline.sh +0 -0
  151. /package/skills/{publish → j-publish}/scripts/publish_common.sh +0 -0
  152. /package/skills/{publish → j-publish}/scripts/reconcile_tags.sh +0 -0
  153. /package/skills/{publish → j-publish}/scripts/run_gates.sh +0 -0
  154. /package/skills/{publish → j-publish}/scripts/setup_wizard.sh +0 -0
  155. /package/skills/{publish → j-publish}/scripts/show_history.sh +0 -0
  156. /package/skills/{publish → j-publish}/scripts/suggest_semver_bump.sh +0 -0
  157. /package/skills/{publish → j-publish}/scripts/validate_config.sh +0 -0
  158. /package/skills/{publish → j-publish}/scripts/validate_droplet_env.sh +0 -0
  159. /package/skills/{publish → j-publish}/scripts/validate_ios_env.sh +0 -0
  160. /package/skills/{publish → j-publish}/scripts/validate_npm_ci_env.sh +0 -0
  161. /package/skills/{publish → j-publish}/scripts/validate_npm_env.sh +0 -0
  162. /package/skills/{publish → j-publish}/scripts/write_ledger_entry.sh +0 -0
  163. /package/skills/{reconcile → j-reconcile}/assets/report_format.md +0 -0
  164. /package/skills/{reconcile-origin → j-reconcile-origin}/scripts/reconcile-origin.sh +0 -0
  165. /package/skills/{skillify → j-skillify}/assets/init-new/SKILL.md +0 -0
  166. /package/skills/{init → j-skillify/assets/init-new}/assets/.gitignore_template +0 -0
  167. /package/skills/{init → j-skillify/assets/init-new}/assets/PROJECT_SUMMARY_template.md +0 -0
  168. /package/skills/{init → j-skillify/assets/init-new}/assets/directory_structure.txt +0 -0
  169. /package/skills/{init → j-skillify/assets/init-new}/assets/test-config_template.json +0 -0
  170. /package/skills/{skillify → j-skillify}/assets/init-new/assets/workflow_template.json +0 -0
  171. /package/skills/{skillify → j-skillify}/assets/init-new/scripts/init.sh +0 -0
  172. /package/skills/{skillify → j-skillify}/assets/init-old/SKILL.md +0 -0
  173. /package/skills/{status → j-status}/assets/output_format.md +0 -0
  174. /package/skills/{todo → j-todo}/assets/todo_template.md +0 -0
  175. /package/skills/{uncharted → j-uncharted}/assets/SEGMENT_PROPOSAL_TEMPLATE.md +0 -0
  176. /package/skills/{uncharted → j-uncharted}/scripts/apply-subsystem-cap.sh +0 -0
  177. /package/skills/{uncharted → j-uncharted}/scripts/discover-subsystems.sh +0 -0
@@ -1,166 +0,0 @@
1
- #!/usr/bin/env bash
2
- # ---------------------------------------------------------------------------
3
- # skills/init/scripts/detect-existing-codebase.sh
4
- #
5
- # Deterministic front half of the /init "detect existing project state" step.
6
- # /init currently always scaffolds as though the target directory were empty.
7
- # That is wrong whenever a directory already carries a Jenga scaffold, or
8
- # already carries substantial application code that predates Jenga entirely
9
- # -- in the second case, scaffolding fresh produces an empty board and a stub
10
- # PROJECT_SUMMARY.md that actively misrepresent the project.
11
- #
12
- # This script answers exactly one question -- "what kind of directory is
13
- # this?" -- and nothing else. It never scaffolds, never prompts, never runs
14
- # /uncharted, and never modifies anything on disk. Deciding what to DO with
15
- # the verdict is agent judgement and lives in skills/init/SKILL.md.
16
- #
17
- # ---------------------------------------------------------------------------
18
- # VERDICTS -- exactly one is printed on stdout, nothing else
19
- # ---------------------------------------------------------------------------
20
- # empty The target is empty, or contains only boilerplate
21
- # that does not count as "there is a project here":
22
- # .git (the directory itself, pruned entirely -- not
23
- # merely excluded by name), .gitignore, and top-level
24
- # README*/LICENSE*/LICENCE* files (case-insensitive),
25
- # plus anything git itself reports as ignored. A repo
26
- # containing only a README is empty for this purpose.
27
- # already-scaffolded The target already carries a Jenga scaffold: any one
28
- # of project/board/, project/PROJECT_SUMMARY.md, or
29
- # project/configs/workflow.json is present. Checked
30
- # BEFORE the emptiness scan, so a scaffolded project
31
- # that also happens to look sparse is never misreported
32
- # as "empty".
33
- # existing-codebase The target has real content (source files, configs,
34
- # docs beyond the boilerplate list above, etc.) and is
35
- # not already Jenga-scaffolded. This is the case /init
36
- # currently mishandles: scaffolding fresh here silently
37
- # discards the fact that pre-existing code exists.
38
- #
39
- # ---------------------------------------------------------------------------
40
- # NOTES ON GITIGNORE HANDLING
41
- # ---------------------------------------------------------------------------
42
- # /init runs this check BEFORE `git init` in the fresh-scaffold path, so the
43
- # target directory is very often not a git work tree yet. Gitignore-based
44
- # filtering is therefore best-effort: it only runs when the target already
45
- # has a `.git` directory AND `git` is on PATH. A standalone `.gitignore` file
46
- # with no repository behind it still counts as boilerplate via the name-based
47
- # exclusion below -- it just cannot hide any OTHER file, because there is no
48
- # git to ask "is this ignored".
49
- #
50
- # README/LICENSE exclusion applies to TOP-LEVEL entries only. A directory
51
- # whose only content is a buried `docs/README.md` two levels down is real
52
- # structure, not boilerplate, and must not be reported as empty.
53
- #
54
- # ---------------------------------------------------------------------------
55
- # Usage
56
- # ---------------------------------------------------------------------------
57
- # detect-existing-codebase.sh [target-dir]
58
- #
59
- # target-dir Directory to classify. Default: current directory.
60
- #
61
- # Options:
62
- # -h, --help Show this help and exit 0.
63
- #
64
- # Exit codes:
65
- # 0 A verdict was printed on stdout.
66
- # 1 Usage error (unknown option, more than one positional argument).
67
- # 2 target-dir does not exist or is not a directory.
68
- #
69
- # Requires: bash, find. git is used opportunistically for gitignore
70
- # filtering when the target is already a git work tree; its absence never
71
- # causes a failure.
72
- # ---------------------------------------------------------------------------
73
-
74
- set -euo pipefail
75
-
76
- SELF="$(basename "$0")"
77
-
78
- usage() {
79
- sed -n '/^# Usage$/,/^# Requires:/p' "$0" | sed -e 's/^# \{0,1\}//' -e '/^-\{10,\}$/d'
80
- }
81
-
82
- die_usage() {
83
- printf '%s: error: %s\n' "$SELF" "$*" >&2
84
- echo >&2
85
- usage >&2
86
- exit 1
87
- }
88
-
89
- TARGET_DIR="."
90
- HAVE_TARGET=0
91
-
92
- while [ "$#" -gt 0 ]; do
93
- case "$1" in
94
- -h|--help) usage; exit 0 ;;
95
- --)
96
- shift
97
- [ "$#" -le 1 ] || die_usage "at most one target directory is allowed"
98
- if [ "$#" -eq 1 ]; then TARGET_DIR="$1"; HAVE_TARGET=1; fi
99
- shift $#
100
- ;;
101
- -*)
102
- die_usage "unknown option \"$1\"" ;;
103
- *)
104
- [ "$HAVE_TARGET" -eq 0 ] || die_usage "at most one target directory is allowed (got \"$TARGET_DIR\" and \"$1\")"
105
- TARGET_DIR="$1"; HAVE_TARGET=1; shift ;;
106
- esac
107
- done
108
-
109
- [ -d "$TARGET_DIR" ] || { printf '%s: error: not a directory: %s\n' "$SELF" "$TARGET_DIR" >&2; exit 2; }
110
-
111
- TARGET_DIR="$(cd -- "$TARGET_DIR" && pwd -P)"
112
-
113
- # --- already-scaffolded: checked first, independent of emptiness -----------
114
- if [ -d "$TARGET_DIR/project/board" ] \
115
- || [ -f "$TARGET_DIR/project/PROJECT_SUMMARY.md" ] \
116
- || [ -f "$TARGET_DIR/project/configs/workflow.json" ]; then
117
- echo "already-scaffolded"
118
- exit 0
119
- fi
120
-
121
- # --- enumerate candidate files, pruning .git entirely -----------------------
122
- ALL_FILES=$(mktemp "${TMPDIR:-/tmp}/detect-existing-codebase.XXXXXX")
123
- IGNORED_FILES=$(mktemp "${TMPDIR:-/tmp}/detect-existing-codebase-ignored.XXXXXX")
124
- cleanup() { rm -f "$ALL_FILES" "$IGNORED_FILES"; }
125
- trap cleanup EXIT
126
-
127
- find "$TARGET_DIR" -path "$TARGET_DIR/.git" -prune -o -type f -print > "$ALL_FILES"
128
-
129
- # --- best-effort gitignore filtering ----------------------------------------
130
- : > "$IGNORED_FILES"
131
- if [ -d "$TARGET_DIR/.git" ] && command -v git >/dev/null 2>&1; then
132
- git -C "$TARGET_DIR" check-ignore --stdin < "$ALL_FILES" > "$IGNORED_FILES" 2>/dev/null || true
133
- fi
134
-
135
- # --- classify each candidate -------------------------------------------------
136
- SOURCE_FOUND=0
137
- while IFS= read -r f; do
138
- [ -n "$f" ] || continue
139
-
140
- if [ -s "$IGNORED_FILES" ] && grep -Fxq -- "$f" "$IGNORED_FILES"; then
141
- continue
142
- fi
143
-
144
- rel="${f#"$TARGET_DIR"/}"
145
- base="$(basename -- "$f")"
146
- dir_rel="$(dirname -- "$rel")"
147
-
148
- if [ "$dir_rel" = "." ]; then
149
- if [ "$base" = ".gitignore" ]; then
150
- continue
151
- fi
152
- base_upper="$(printf '%s' "$base" | tr '[:lower:]' '[:upper:]')"
153
- case "$base_upper" in
154
- README*|LICENSE*|LICENCE*) continue ;;
155
- esac
156
- fi
157
-
158
- SOURCE_FOUND=1
159
- break
160
- done < "$ALL_FILES"
161
-
162
- if [ "$SOURCE_FOUND" -eq 1 ]; then
163
- echo "existing-codebase"
164
- else
165
- echo "empty"
166
- fi
@@ -1,116 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
- ASSETS_DIR="$SCRIPT_DIR/../assets"
6
- VISIBILITY_SCRIPT="$SCRIPT_DIR/apply-project-visibility.sh"
7
-
8
- # ─── Resolve the package root that owns templates/ and lib/ ──────────────────
9
- # postinstall.js mirrors only skills/ and agents/ into .claude/ and .agents/ —
10
- # templates/ and lib/ are never copied there, so a script running from a
11
- # mirrored copy (.claude/skills/init/scripts/ or .agents/skills/init/scripts/)
12
- # cannot reach its siblings via a fixed ../../../ climb the way it can in this
13
- # monorepo checkout, where init.sh actually lives at skills/init/scripts/ with
14
- # templates/ and lib/ three levels up. Consumers instead have them inside the
15
- # installed npm package.
16
- if [[ -d "$SCRIPT_DIR/../../../templates" ]]; then
17
- PKG_ROOT="$SCRIPT_DIR/../../.."
18
- elif [[ -d "$PWD/node_modules/@jenga-ai/agent/templates" ]]; then
19
- PKG_ROOT="$PWD/node_modules/@jenga-ai/agent"
20
- else
21
- echo "Error: could not locate the jenga-agent package root (templates/ not found via monorepo checkout or node_modules/@jenga-ai/agent)." >&2
22
- exit 1
23
- fi
24
-
25
- # ─── 0. Resolve project_files_visibility ─────────────────────────────────────
26
- # Defaults to `visible` — the only value that touches nothing on disk — so an
27
- # unattended run can never silently relocate directories or edit .gitignore.
28
- VISIBILITY="${JENGA_PROJECT_FILES_VISIBILITY:-visible}"
29
-
30
- while [[ $# -gt 0 ]]; do
31
- case "$1" in
32
- --visibility) VISIBILITY="${2:-}"; shift 2 ;;
33
- --visibility=*) VISIBILITY="${1#*=}"; shift ;;
34
- *) echo "Unknown argument: $1" >&2
35
- echo "Usage: $(basename "$0") [--visibility <visible|ignored>]" >&2
36
- exit 1 ;;
37
- esac
38
- done
39
-
40
- # Validate before scaffolding so a typo cannot leave a half-initialised project.
41
- bash "$VISIBILITY_SCRIPT" --check-only "$VISIBILITY"
42
-
43
- # ─── 1. Initialize git repository ────────────────────────────────────────────
44
- echo "→ Initializing git repository..."
45
- git init
46
-
47
- # ─── 2. Create .gitignore ─────────────────────────────────────────────────────
48
- echo "→ Copying .gitignore from template..."
49
- cp "$ASSETS_DIR/.gitignore_template" .gitignore
50
-
51
- # ─── 3. Scaffold directory structure ──────────────────────────────────────────
52
- echo "→ Scaffolding directory structure..."
53
- while IFS= read -r dir || [[ -n "$dir" ]]; do
54
- [[ -z "$dir" || "$dir" == \#* ]] && continue
55
- mkdir -p "$dir"
56
- done < "$ASSETS_DIR/directory_structure.txt"
57
-
58
- # ─── 4. Create project/PROJECT_SUMMARY.md ────────────────────────────────────
59
- echo "→ Copying PROJECT_SUMMARY.md from template..."
60
- cp "$ASSETS_DIR/PROJECT_SUMMARY_template.md" project/PROJECT_SUMMARY.md
61
-
62
- # ─── 5. Create project/configs/workflow.json ─────────────────────────────────
63
- echo "→ Copying workflow.json from template..."
64
- cp "$ASSETS_DIR/workflow_template.json" project/configs/workflow.json
65
-
66
- # ─── 6. Create project/configs/test-config.json stub ─────────────────────────
67
- echo "→ Copying test-config.json from template..."
68
- cp "$ASSETS_DIR/test-config_template.json" project/configs/test-config.json
69
-
70
- # ─── 6.5. Create project/configs/scope-thresholds.json ───────────────────────
71
- # Consumed by skills/jenga (Phase 0) and skills/do (Step 0); both halt if it's
72
- # missing, so it must exist immediately after scaffold.
73
- echo "→ Copying scope-thresholds.json from template..."
74
- cp "$ASSETS_DIR/scope-thresholds_template.json" project/configs/scope-thresholds.json
75
-
76
- # ─── 7. Create project/data/baselines.json ───────────────────────────────────
77
- echo "→ Creating baselines.json..."
78
- echo '{}' > project/data/baselines.json
79
-
80
- # ─── 8. Create project/logs/events.json ──────────────────────────────────────
81
- echo "→ Creating events.json..."
82
- echo '[]' > project/logs/events.json
83
-
84
- # ─── 9. Create docs/STRATEGY.md ──────────────────────────────────────────────
85
- echo "→ Creating docs/STRATEGY.md (strategic brief for investors, partners, and the product team)..."
86
- mkdir -p docs
87
- cp "$ASSETS_DIR/strategy_stub_template.md" docs/STRATEGY.md
88
-
89
- # ─── 10. Create CHANGELOG.md ──────────────────────────────────────────────────
90
- echo "→ Creating CHANGELOG.md from template..."
91
- cp "$PKG_ROOT/templates/CHANGELOG_TEMPLATE.md" CHANGELOG.md
92
-
93
- # ─── 11. Apply project_files_visibility ──────────────────────────────────────
94
- # Runs before the commit so the .gitignore entry (ignored) is captured in the
95
- # initial commit.
96
- echo "→ Applying project files visibility ($VISIBILITY)..."
97
- bash "$VISIBILITY_SCRIPT" "$VISIBILITY" "$PWD"
98
-
99
- # ─── 12. Generate CLAUDE.md / AGENTS.md ──────────────────────────────────────
100
- # Unconditional — never gated on agentTarget (E41_S04). Applies the J-
101
- # collision rule and idempotent managed-block updates; see
102
- # lib/generate-agent-context.js (shared with the published `jenga init` CLI).
103
- echo "→ Generating CLAUDE.md / AGENTS.md..."
104
- if command -v node >/dev/null 2>&1; then
105
- node "$PKG_ROOT/lib/generate-agent-context.js" "$PWD"
106
- else
107
- echo " Warning: node not found — skipped CLAUDE.md/AGENTS.md generation." >&2
108
- fi
109
-
110
- # ─── 13. Initial commit ──────────────────────────────────────────────────────
111
- echo "→ Staging and committing scaffolded files..."
112
- git add -A
113
- git commit -m "init: scaffold project structure and workflow config"
114
-
115
- echo ""
116
- echo "✓ Project scaffold complete."
@@ -1,25 +0,0 @@
1
- ---
2
- name: j:jbp
3
- description: Scaffold the project using the JengaBasePlate boilerplate repo template from https://github.com/samwelmunga/JengaBasePlate.git
4
- keywords:
5
- - jbp
6
- - boilerplate
7
- - scaffold
8
- - template
9
- - jenga base
10
- examples:
11
- - "scaffold with JengaBasePlate"
12
- - "set up the base template"
13
- ---
14
-
15
- # JBP — JengaBasePlate Scaffold
16
-
17
- ## Instructions
18
-
19
- Use the following repo as the boilerplate framework for this project:
20
-
21
- ```
22
- https://github.com/samwelmunga/JengaBasePlate.git
23
- ```
24
-
25
- Clone or pull the template and apply its structure to the current project.
@@ -1,21 +0,0 @@
1
- ---
2
- name: j:lgtm
3
- description: Approve and commit the current work, then continue to the next task. Shortcut that chains /commit followed by /continue.
4
- keywords:
5
- - lgtm
6
- - approve
7
- - looks good
8
- - done
9
- - commit and continue
10
- examples:
11
- - "lgtm, commit this"
12
- - "looks good, move on"
13
- ---
14
-
15
- # LGTM — Approve, Commit, and Continue
16
-
17
- ## Instructions
18
-
19
- 1. Invoke the `/commit` skill and wait for it to finish.
20
-
21
- 2. If the current workflow is part of a `/do` execution, return to that workflow. Otherwise, invoke the `/continue` skill.
@@ -1,15 +0,0 @@
1
- # macOS & Windows system files
2
- .DS_Store
3
- Thumbs.db
4
- Desktop.ini
5
-
6
- # Environment files
7
- .env
8
- .env.*
9
- *.local
10
-
11
- # Dependency directories
12
- node_modules/
13
- vendor/
14
- .venv/
15
- EOF
@@ -1,13 +0,0 @@
1
- # Project Summary
2
-
3
- ## Overview
4
- _To be completed._
5
-
6
- ## Architecture & Structure
7
- _To be completed._
8
-
9
- ## Epics
10
- _To be completed via /pi-plan._
11
-
12
- ## Conventions
13
- _To be completed._
@@ -1,14 +0,0 @@
1
- project/board/epics
2
- project/board/stories
3
- project/board/tasks
4
- project/instructions
5
- project/configs
6
- project/data
7
- project/queue
8
- project/rapports/problems
9
- project/rapports/analysis
10
- project/logs
11
- project/documentation
12
- project/documentation/plans
13
- project/documentation/summaries
14
- project/documentation/examples
@@ -1,4 +0,0 @@
1
- {
2
- "_note": "Run the tester agent to configure tools for this project.",
3
- "tools": []
4
- }
@@ -1,20 +0,0 @@
1
- ---
2
- name: j:wtf
3
- description: Alias of /clearify — clarifies ambiguous, dense, or under-specified prompts and conversation on request. This folder exists only so the `/wtf` slash command resolves to a skill; behaviour is identical to `/clearify`.
4
- keywords:
5
- - wtf
6
- - confused
7
- - huh
8
- - what does this mean
9
- - I'm lost
10
- examples:
11
- - "wtf"
12
- - "wtf does this mean"
13
- - "wtf is going on here"
14
- ---
15
-
16
- # WTF — Alias of /clearify
17
-
18
- ## Instructions
19
-
20
- `/wtf` is an alias of `/clearify`. Follow `skills/clearify/SKILL.md` in full — do not duplicate or reimplement its ambiguity-detection logic here. Read that file's `## Instructions` section and execute it exactly as written, using whatever prompt or conversation context is attached to this `/wtf` invocation.
File without changes
File without changes
File without changes
File without changes