@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.
- package/README.md +97 -91
- package/agents/developer.md +26 -7
- package/agents/scrum-master.md +57 -22
- package/agents/tester.md +68 -4
- package/hooks/on_session_end.sh +40 -1
- package/lib/generate-agent-context.js +18 -1
- package/lib/generate-copilot-instructions.js +18 -1
- package/lib/generate-skill-allow-list.js +191 -0
- package/lib/skill-allow-list.json +43 -0
- package/package.json +35 -20
- package/scripts/apply-j-prefix.sh +230 -0
- package/scripts/consume-context-digest.sh +103 -0
- package/scripts/postinstall.js +25 -0
- package/scripts/sweep-stale-context-digests.sh +132 -0
- package/scripts/validate-board.sh +5 -0
- package/scripts/write-context-digest.sh +230 -0
- package/skills/brainstorm/SKILL.md +1 -1
- package/skills/btw/SKILL.md +1 -1
- package/skills/clearify/SKILL.md +1 -1
- package/skills/close-story/SKILL.md +78 -6
- package/skills/close-story/scripts/check-privatized.sh +345 -0
- package/skills/commit/SKILL.md +12 -2
- package/skills/continue/SKILL.md +1 -1
- package/skills/deep-dive/SKILL.md +1 -1
- package/skills/dev-done/SKILL.md +46 -0
- package/skills/dev-done/scripts/classify-commit-outcome.sh +114 -0
- package/skills/distribute/SKILL.md +1 -1
- package/skills/do/SKILL.md +100 -10
- package/skills/doc/README.md +155 -0
- package/skills/doc/SKILL.md +43 -13
- package/skills/doc/authoring-notes.md +72 -0
- package/skills/doc/scripts/resolve_last_update.py +149 -0
- package/skills/doc-sync/SKILL.md +1 -1
- package/skills/dooo/SKILL.md +1 -1
- package/skills/error/SKILL.md +1 -1
- package/skills/evaluate/SKILL.md +1 -1
- package/skills/examplify/SKILL.md +1 -1
- package/skills/help/SKILL.md +1 -1
- package/skills/idea/SKILL.md +1 -1
- package/skills/improve/SKILL.md +1 -1
- package/skills/init/SKILL.md +8 -7
- package/skills/init/assets/scope-thresholds_template.json +7 -0
- package/skills/init/scripts/init.sh +6 -0
- package/skills/j-init/SKILL.md +168 -0
- package/skills/j-init/assets/.gitignore_template +15 -0
- package/skills/j-init/assets/PROJECT_SUMMARY_template.md +13 -0
- package/skills/j-init/assets/directory_structure.txt +14 -0
- package/skills/j-init/assets/scope-thresholds_template.json +7 -0
- package/skills/j-init/assets/strategy_stub_template.md +38 -0
- package/skills/j-init/assets/test-config_template.json +4 -0
- package/skills/j-init/assets/workflow_template.json +30 -0
- package/skills/j-init/scripts/apply-project-visibility.sh +176 -0
- package/skills/j-init/scripts/detect-existing-codebase.sh +166 -0
- package/skills/j-init/scripts/init.sh +116 -0
- package/skills/jbp/SKILL.md +1 -1
- package/skills/jenga/SKILL.md +1 -1
- package/skills/jenga/scripts/render-confirmation.sh +55 -18
- package/skills/jenga-permission-level/SKILL.md +1 -1
- package/skills/lgtm/SKILL.md +1 -1
- package/skills/pi-plan/SKILL.md +1 -1
- package/skills/proceed/SKILL.md +1 -1
- package/skills/publish/SKILL.md +67 -1
- package/skills/publish/adapters/npm-ci.md +60 -4
- package/skills/publish/adapters/npm.md +18 -0
- package/skills/publish/assets/ci-contract.md +27 -0
- package/skills/publish/assets/publish.example.json +27 -0
- package/skills/publish/schemas/publish.schema.json +20 -0
- package/skills/publish/scripts/npm_ci_pipeline.sh +50 -1
- package/skills/publish/scripts/npm_stage_inspect.sh +829 -0
- package/skills/publish/scripts/npm_stage_pipeline.sh +427 -0
- package/skills/publish/scripts/publish_common.sh +16 -0
- package/skills/publish/scripts/show_history.sh +12 -5
- package/skills/publish/scripts/validate_npm_stage_env.sh +184 -0
- package/skills/publish/scripts/write_ledger_entry.sh +92 -2
- package/skills/reconcile/SKILL.md +122 -12
- package/skills/reconcile/assets/report_format.md +17 -0
- package/skills/reconcile/scripts/resolve-reconcile-scope.sh +489 -0
- package/skills/reconcile-origin/SKILL.md +1 -1
- package/skills/redo/SKILL.md +1 -1
- package/skills/skillify/SKILL.md +1 -1
- package/skills/spinoff/SKILL.md +1 -1
- package/skills/status/SKILL.md +1 -1
- package/skills/todo/SKILL.md +40 -3
- package/skills/todo/scripts/add_trivial_task.sh +216 -0
- package/skills/todo/scripts/update_story_tasks.py +87 -0
- package/skills/uncharted/SKILL.md +201 -22
- package/skills/uncharted/scripts/directory-triage.sh +342 -0
- package/skills/uncharted/scripts/elicitation-state.sh +457 -0
- package/skills/wtf/SKILL.md +1 -1
- package/templates/SCRUM_BOARD_SCHEMA.md +90 -2
- package/templates/agent-context.md.tpl +47 -12
- package/templates/copilot-instructions.md.tpl +36 -9
- package/mcp/router/README.md +0 -19
- package/mcp/router/embedder.js +0 -23
- package/mcp/router/index.js +0 -204
- package/mcp/router/matcher.js +0 -87
- package/mcp/router/package-lock.json +0 -1048
- package/mcp/router/package.json +0 -11
- package/mcp/router/skill-index.js +0 -104
- 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:
|
|
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
|
|