@jenga-ai/agent 1.2.4 → 2.0.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 (100) hide show
  1. package/README.md +97 -91
  2. package/agents/developer.md +26 -7
  3. package/agents/scrum-master.md +57 -22
  4. package/agents/tester.md +68 -4
  5. package/hooks/on_session_end.sh +40 -1
  6. package/lib/generate-agent-context.js +18 -1
  7. package/lib/generate-copilot-instructions.js +18 -1
  8. package/lib/generate-skill-allow-list.js +191 -0
  9. package/lib/skill-allow-list.json +43 -0
  10. package/package.json +35 -20
  11. package/scripts/apply-j-prefix.sh +230 -0
  12. package/scripts/consume-context-digest.sh +103 -0
  13. package/scripts/postinstall.js +25 -0
  14. package/scripts/sweep-stale-context-digests.sh +132 -0
  15. package/scripts/validate-board.sh +5 -0
  16. package/scripts/write-context-digest.sh +230 -0
  17. package/skills/brainstorm/SKILL.md +1 -1
  18. package/skills/btw/SKILL.md +1 -1
  19. package/skills/clearify/SKILL.md +1 -1
  20. package/skills/close-story/SKILL.md +78 -6
  21. package/skills/close-story/scripts/check-privatized.sh +345 -0
  22. package/skills/commit/SKILL.md +12 -2
  23. package/skills/continue/SKILL.md +1 -1
  24. package/skills/deep-dive/SKILL.md +1 -1
  25. package/skills/dev-done/SKILL.md +46 -0
  26. package/skills/dev-done/scripts/classify-commit-outcome.sh +114 -0
  27. package/skills/distribute/SKILL.md +1 -1
  28. package/skills/do/SKILL.md +100 -10
  29. package/skills/doc/README.md +155 -0
  30. package/skills/doc/SKILL.md +43 -13
  31. package/skills/doc/authoring-notes.md +72 -0
  32. package/skills/doc/scripts/resolve_last_update.py +149 -0
  33. package/skills/doc-sync/SKILL.md +1 -1
  34. package/skills/dooo/SKILL.md +1 -1
  35. package/skills/error/SKILL.md +1 -1
  36. package/skills/evaluate/SKILL.md +1 -1
  37. package/skills/examplify/SKILL.md +1 -1
  38. package/skills/help/SKILL.md +1 -1
  39. package/skills/idea/SKILL.md +1 -1
  40. package/skills/improve/SKILL.md +1 -1
  41. package/skills/init/SKILL.md +8 -7
  42. package/skills/init/assets/scope-thresholds_template.json +7 -0
  43. package/skills/init/scripts/init.sh +6 -0
  44. package/skills/j-init/SKILL.md +168 -0
  45. package/skills/j-init/assets/.gitignore_template +15 -0
  46. package/skills/j-init/assets/PROJECT_SUMMARY_template.md +13 -0
  47. package/skills/j-init/assets/directory_structure.txt +14 -0
  48. package/skills/j-init/assets/scope-thresholds_template.json +7 -0
  49. package/skills/j-init/assets/strategy_stub_template.md +38 -0
  50. package/skills/j-init/assets/test-config_template.json +4 -0
  51. package/skills/j-init/assets/workflow_template.json +30 -0
  52. package/skills/j-init/scripts/apply-project-visibility.sh +176 -0
  53. package/skills/j-init/scripts/detect-existing-codebase.sh +166 -0
  54. package/skills/j-init/scripts/init.sh +116 -0
  55. package/skills/jbp/SKILL.md +1 -1
  56. package/skills/jenga/SKILL.md +1 -1
  57. package/skills/jenga/scripts/render-confirmation.sh +55 -18
  58. package/skills/jenga-permission-level/SKILL.md +1 -1
  59. package/skills/lgtm/SKILL.md +1 -1
  60. package/skills/pi-plan/SKILL.md +1 -1
  61. package/skills/proceed/SKILL.md +1 -1
  62. package/skills/publish/SKILL.md +67 -1
  63. package/skills/publish/adapters/npm-ci.md +60 -4
  64. package/skills/publish/adapters/npm.md +18 -0
  65. package/skills/publish/assets/ci-contract.md +27 -0
  66. package/skills/publish/assets/publish.example.json +27 -0
  67. package/skills/publish/schemas/publish.schema.json +20 -0
  68. package/skills/publish/scripts/npm_ci_pipeline.sh +50 -1
  69. package/skills/publish/scripts/npm_stage_inspect.sh +829 -0
  70. package/skills/publish/scripts/npm_stage_pipeline.sh +427 -0
  71. package/skills/publish/scripts/publish_common.sh +16 -0
  72. package/skills/publish/scripts/show_history.sh +12 -5
  73. package/skills/publish/scripts/validate_npm_stage_env.sh +184 -0
  74. package/skills/publish/scripts/write_ledger_entry.sh +92 -2
  75. package/skills/reconcile/SKILL.md +122 -12
  76. package/skills/reconcile/assets/report_format.md +17 -0
  77. package/skills/reconcile/scripts/resolve-reconcile-scope.sh +489 -0
  78. package/skills/reconcile-origin/SKILL.md +1 -1
  79. package/skills/redo/SKILL.md +1 -1
  80. package/skills/skillify/SKILL.md +1 -1
  81. package/skills/spinoff/SKILL.md +1 -1
  82. package/skills/status/SKILL.md +1 -1
  83. package/skills/todo/SKILL.md +40 -3
  84. package/skills/todo/scripts/add_trivial_task.sh +216 -0
  85. package/skills/todo/scripts/update_story_tasks.py +87 -0
  86. package/skills/uncharted/SKILL.md +201 -22
  87. package/skills/uncharted/scripts/directory-triage.sh +342 -0
  88. package/skills/uncharted/scripts/elicitation-state.sh +457 -0
  89. package/skills/wtf/SKILL.md +1 -1
  90. package/templates/SCRUM_BOARD_SCHEMA.md +90 -2
  91. package/templates/agent-context.md.tpl +47 -12
  92. package/templates/copilot-instructions.md.tpl +36 -9
  93. package/mcp/router/README.md +0 -19
  94. package/mcp/router/embedder.js +0 -23
  95. package/mcp/router/index.js +0 -204
  96. package/mcp/router/matcher.js +0 -87
  97. package/mcp/router/package-lock.json +0 -1048
  98. package/mcp/router/package.json +0 -11
  99. package/mcp/router/skill-index.js +0 -104
  100. package/skills/route/SKILL.md +0 -180
@@ -109,6 +109,24 @@ A successful run produces:
109
109
  - A local (and optionally pushed) git tag `v<version>` matching the published `version`
110
110
  - A history row appended to `project/logs/publish-history.json`
111
111
 
112
+ ## Staged Publishing
113
+
114
+ Before a live `deploy`, this target type also supports **staged publishing**
115
+ via `/publish stage` — npm's own pre-publish staging area, which lets a
116
+ release be smoke-tested from the exact tarball that would ship before it
117
+ becomes visible on the registry. See `skills/publish/SKILL.md`'s
118
+ `### /publish stage` section for the full command reference; summary here:
119
+
120
+ - `bash skills/publish/scripts/npm_stage_pipeline.sh <target> <path-to-publish.json> [--dry-run] [--non-interactive] [--otp <otp>]` runs validate → gates → pack → stage → capture → ledger and writes a `staged` ledger entry.
121
+ - `bash skills/publish/scripts/npm_stage_inspect.sh test <stage-id>` installs the staged tarball into an isolated scratch directory and smoke-tests it, writing a `stage_tested` ledger entry.
122
+ - `bash skills/publish/scripts/npm_stage_inspect.sh approve <stage-id>` requires an npm 2FA one-time password and refuses without a passing `test` on record unless `--force <reason>` is given.
123
+ - `bash skills/publish/scripts/npm_stage_inspect.sh reject <stage-id>` discards the staged version.
124
+
125
+ Same registry-existence precondition as a normal `npm` publish: staged
126
+ publishing only applies to a package that has already had at least one
127
+ non-staged publish (`validate_npm_stage_env.sh` checks this up front, exit
128
+ `4` if not).
129
+
112
130
  ## Post-deploy manual steps
113
131
 
114
132
  After a successful publish, the deploy flow must print:
@@ -71,6 +71,33 @@ These inputs remain optional in non-interactive mode:
71
71
  | `3` | Deploy failure | Used by the iOS adapter pipeline for build/export/upload failures |
72
72
  | `4` | Config or environment invalid | Implemented by validation scripts |
73
73
 
74
+ ## Staged publishing (`/publish stage`) — exit codes and ledger states
75
+
76
+ `/publish stage` (npm/npm-ci only) has its own exit-code contract, separate
77
+ from the deploy contract above:
78
+
79
+ | Code | Meaning |
80
+ |---|---|
81
+ | `0` | Success (staged, or `--dry-run`/`--help` completed cleanly) |
82
+ | `1` | User declined the pack confirmation prompt (or no tty was available) — `npm_stage_pipeline.sh` only |
83
+ | `2` | A mandatory pre-deploy gate failed; nothing was staged — `npm_stage_pipeline.sh` only |
84
+ | `3` | The underlying `npm stage <sub>` command failed, the tarball install failed, or the smoke test failed (`npm_stage_inspect.sh`); or `npm stage publish`/stage-id capture failed (`npm_stage_pipeline.sh`) |
85
+ | `4` | Config/environment validation failure (`validate_npm_stage_env.sh`, or bad args), or (`npm_stage_inspect.sh` only) a usage error, an unknown sub-command, or the `approve` test interlock refusing without a passing test on record and no `--force <reason>` |
86
+
87
+ `test` (via `npm_stage_inspect.sh`) surfaces a smoke-test failure as a
88
+ non-zero exit — code `3` — distinct from a usage error (`4`).
89
+
90
+ The publish ledger (`project/logs/publish-history.json`) gains four new
91
+ `platform_state` values alongside the existing `uploaded`/`partial`/
92
+ `dry-run`/`failed`:
93
+
94
+ | `platform_state` | Written by | Meaning |
95
+ |---|---|---|
96
+ | `staged` | `npm_stage_pipeline.sh` | Version staged to npm's staged-publishing area; not yet visible on the registry |
97
+ | `stage_tested` | `npm_stage_inspect.sh test` | The staged tarball was installed in isolation and smoke-tested; ledger row records `pass`/`fail` |
98
+ | `approved` | `npm_stage_inspect.sh approve` | The staged version was approved (2FA-gated) and is now published |
99
+ | `rejected` | `npm_stage_inspect.sh reject` | The staged version was discarded and will never be published |
100
+
74
101
  ## Precedence rules
75
102
 
76
103
  1. Command-line flags win over environment variables.
@@ -80,6 +80,33 @@
80
80
  "provider_short_name": "exampleco"
81
81
  },
82
82
  "notes": "Production upload example using App Store export mode."
83
+ },
84
+ {
85
+ "name": "npm-ci-example",
86
+ "type": "npm-ci",
87
+ "platform": "npm-ci-oidc",
88
+ "github_repo": "exampleco/example-package",
89
+ "workflow_path": ".github/workflows/npm-publish.yml",
90
+ "checks": {
91
+ "pre": [
92
+ "lint",
93
+ "type-check"
94
+ ],
95
+ "post": [
96
+ "smoke-test"
97
+ ]
98
+ },
99
+ "npm": {
100
+ "package_name": "@exampleco/example-package",
101
+ "access": "public",
102
+ "registry": "https://registry.npmjs.org",
103
+ "dist_tag": "latest",
104
+ "stage": {
105
+ "smoke_cmd": "npm run smoke-test",
106
+ "require_test_before_approve": true
107
+ }
108
+ },
109
+ "notes": "Scaffold example only. Demonstrates the optional npm.stage block used by '/publish stage'. Replace package_name and github_repo with your real values."
83
110
  }
84
111
  ]
85
112
  }
@@ -237,6 +237,26 @@
237
237
  "minLength": 1,
238
238
  "pattern": "^[a-z0-9][a-z0-9._-]*$",
239
239
  "default": "latest"
240
+ },
241
+ "stage": {
242
+ "$ref": "#/definitions/npmStageSettings"
243
+ }
244
+ }
245
+ },
246
+ "npmStageSettings": {
247
+ "description": "Optional settings for `/publish stage` on an npm or npm-ci target. Absent entirely on targets that don't use staged publishing.",
248
+ "type": "object",
249
+ "additionalProperties": false,
250
+ "properties": {
251
+ "smoke_cmd": {
252
+ "description": "Command that `stage test` runs against the installed staged tarball. When absent, `stage test` falls back to a documented default.",
253
+ "type": "string",
254
+ "minLength": 1
255
+ },
256
+ "require_test_before_approve": {
257
+ "description": "When true, `stage approve` refuses without a recorded successful test for that stage id. Defaults to true.",
258
+ "type": "boolean",
259
+ "default": true
240
260
  }
241
261
  }
242
262
  },
@@ -160,13 +160,23 @@ WORKFLOW_YAML="$(cat <<EOF
160
160
  name: "Publish — ${PACKAGE_NAME}"
161
161
  on:
162
162
  workflow_dispatch:
163
+ inputs:
164
+ mode:
165
+ description: "publish (default) or stage — dispatched by npm_stage_pipeline.sh with mode=stage for /publish stage"
166
+ required: false
167
+ default: publish
168
+ type: choice
169
+ options:
170
+ - publish
171
+ - stage
163
172
 
164
173
  permissions:
165
174
  id-token: write
166
- contents: read
175
+ contents: write
167
176
 
168
177
  jobs:
169
178
  publish:
179
+ if: \${{ github.event.inputs.mode == 'publish' || github.event.inputs.mode == '' }}
170
180
  runs-on: ubuntu-latest
171
181
  steps:
172
182
  - name: Checkout
@@ -183,6 +193,45 @@ jobs:
183
193
 
184
194
  - name: Publish to npm
185
195
  run: npm publish --provenance --access ${NPM_ACCESS} --tag ${DIST_TAG}
196
+
197
+ - name: Tag prod release and remove stage tag
198
+ if: success()
199
+ run: |
200
+ git config user.name "github-actions[bot]"
201
+ git config user.email "github-actions[bot]@users.noreply.github.com"
202
+ VERSION="\$(node -p "require('./package.json').version")"
203
+ git tag "v\${VERSION}"
204
+ git push origin "v\${VERSION}"
205
+ git tag -d "v\${VERSION}-stage" 2>/dev/null || true
206
+ git push origin ":refs/tags/v\${VERSION}-stage" 2>/dev/null || true
207
+
208
+ stage:
209
+ if: \${{ github.event.inputs.mode == 'stage' }}
210
+ runs-on: ubuntu-latest
211
+ steps:
212
+ - name: Checkout
213
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
214
+
215
+ - name: Setup Node.js
216
+ uses: actions/setup-node@v4
217
+ with:
218
+ node-version: lts/*
219
+ registry-url: https://registry.npmjs.org
220
+
221
+ - name: Install dependencies
222
+ run: npm ci
223
+
224
+ - name: Stage to npm
225
+ run: npm stage publish --provenance --access ${NPM_ACCESS} --tag ${DIST_TAG}
226
+
227
+ - name: Tag stage release
228
+ if: success()
229
+ run: |
230
+ git config user.name "github-actions[bot]"
231
+ git config user.email "github-actions[bot]@users.noreply.github.com"
232
+ VERSION="\$(node -p "require('./package.json').version")"
233
+ git tag -f "v\${VERSION}-stage"
234
+ git push origin "v\${VERSION}-stage" --force
186
235
  EOF
187
236
  )"
188
237