@jaybeeuu/agent-cortex 1.39.0 → 1.41.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/.agents/skills/style-versioning/SKILL.md +1 -1
- package/.github/workflows/ci.yml +47 -14
- package/AGENTS.md +35 -8
- package/CHANGELOG.md +60 -0
- package/README.md +174 -97
- package/agents/README.md +14 -11
- package/bin/agent-cortex.mjs +55 -10
- package/bin/installers/claude.mjs +674 -174
- package/bin/installers/copilot.mjs +13 -18
- package/bin/installers/pi.mjs +293 -51
- package/claude/settings.json +4 -0
- package/{claude → claude-extras}/scripts/statusline-command.sh +32 -4
- package/docs/claude-hooks.md +15 -3
- package/docs/ideas/ban-content-assertion-tests.md +73 -0
- package/docs/ideas/bead-progress-notes-for-session-resumption.md +75 -0
- package/docs/ideas/classify-beads-via-deterministic-script-with-agent-fallback.md +70 -0
- package/docs/ideas/ctx-alias-version-and-update-commands.md +65 -0
- package/docs/ideas/ctx-feedback-command-for-capturing-ideas-from-any-machine.md +67 -0
- package/docs/ideas/deployment-beads-for-post-merge-pipelines.md +36 -0
- package/docs/ideas/design-and-delivery-as-separate-bead-trees/design-and-delivery-as-separate-bead-trees.md +99 -0
- package/docs/ideas/enable-signed-commit-enforcement-changesets-bot-commits-must-be-signed.md +33 -0
- package/docs/ideas/extension-manifests.md +55 -14
- package/docs/ideas/improve-pi-system-prompt.md +5 -2
- package/docs/ideas/map-every-cortex-tool-to-a-real-pi-equivalent.md +95 -0
- package/docs/ideas/record-idea-implementation-questions.md +68 -0
- package/docs/ideas/self-flushing-session.md +72 -0
- package/docs/ideas/state-in-beads-not-md.md +69 -0
- package/docs/ideas/task-session-context.local.md +95 -0
- package/docs/ideas/test-data-creation-helpers.md +92 -0
- package/docs/ideas/test-planning-stage-bead-in-feature-planning.md +68 -0
- package/docs/ideas/worktree-housekeeping-for-closed-beads.md +39 -0
- package/docs/technical-direction/harness-config.md +161 -0
- package/docs/technical-direction/migration-execution-labels.md +60 -23
- package/extensions/agent-guardrails/README.md +45 -0
- package/extensions/agent-guardrails/guardrails.test.ts +42 -0
- package/extensions/agent-guardrails/guardrails.ts +66 -0
- package/extensions/agent-guardrails/index.ts +22 -0
- package/extensions/agent-guardrails/node_modules/.bin/pi +21 -0
- package/extensions/agent-guardrails/node_modules/.bin/tsc +21 -0
- package/extensions/agent-guardrails/node_modules/.bin/tsserver +21 -0
- package/extensions/agent-guardrails/node_modules/.bin/tsx +21 -0
- package/extensions/agent-guardrails/package.json +19 -0
- package/extensions/agent-guardrails/tsconfig.json +12 -0
- package/extensions/agent-modes/README.md +12 -5
- package/extensions/agent-modes/discover.test.ts +30 -7
- package/extensions/agent-modes/discover.ts +1 -1
- package/extensions/agent-modes/index.test.ts +208 -0
- package/extensions/agent-modes/index.ts +23 -6
- package/extensions/agent-modes/package.json +1 -1
- package/extensions/skill-stats/index.test.ts +3 -2
- package/lib/cli.mjs +30 -12
- package/lib/pi-packages.mjs +169 -0
- package/package.json +8 -4
- package/pi/settings.json +23 -12
- package/plugin.json +1 -1
- package/scripts/build-copilot-agents.mjs +1 -1
- package/scripts/check-no-sync.mjs +49 -0
- package/scripts/lib/compose-agent.mjs +32 -14
- package/scripts/lib/fs.mjs +31 -0
- package/skills/engineering/grill-with-docs/SKILL.md +1 -1
- package/skills/planning/classify-bead/REFERENCE.md +85 -0
- package/skills/planning/classify-bead/SKILL.md +32 -36
- package/skills/planning/classify-bead/scripts/classify-bead.mjs +292 -0
- package/skills/planning/create-task/SKILL.md +19 -10
- package/skills/planning/write-a-prd/SKILL.md +2 -2
- package/skills/style/style-code/REFERENCE.md +32 -2
- package/skills/style/style-code/SKILL.md +5 -21
- package/skills/style/style-tests/SKILL.md +69 -17
- package/skills/workflow/hitl-collab/SKILL.md +1 -1
- package/skills/workflow/run-pipeline-stage/SKILL.md +13 -1
- package/skills/workflow/run-pipeline-stage/prompts/stage-runner.md +12 -0
- package/test/classify-bead.test.mjs +277 -0
- package/test/claude-installer.test.mjs +199 -139
- package/test/cli.test.mjs +95 -41
- package/test/copilot-installer.test.mjs +92 -82
- package/test/fs.test.mjs +76 -0
- package/test/helpers/fake-claude.mjs +152 -0
- package/test/installer.test.mjs +542 -57
- package/test/pi-installer.test.mjs +457 -102
- package/test/pi-packages.test.mjs +295 -0
- package/token-map.README.md +23 -12
- package/token-map.json +8 -7
- package/.claude-plugin/marketplace.json +0 -16
- package/claude/.claude-plugin/plugin.json +0 -11
- package/claude/agents/plan.md +0 -58
- package/claude/agents/ralph-plan.md +0 -121
- package/claude/agents/ralph.md +0 -193
- package/claude/agents/strategy.md +0 -111
- package/claude/hooks/scripts/notify.mjs +0 -54
- package/claude/hooks.json +0 -38
- /package/{claude → claude-extras}/.mcp.json +0 -0
|
@@ -64,7 +64,7 @@ Fix status bead showing wrong priority after update
|
|
|
64
64
|
The `release` job in `.github/workflows/ci.yml` handles everything automatically:
|
|
65
65
|
|
|
66
66
|
1. **Detects new changesets** on main
|
|
67
|
-
2. **Creates a "Version Packages" PR** — the `version` step runs `pnpm version-packages`, which bumps `package.json`, syncs `plugin.json` (via `scripts/sync-plugin-version.sh`), updates `CHANGELOG.md`, and regenerates the committed
|
|
67
|
+
2. **Creates a "Version Packages" PR** — the `version` step runs `pnpm version-packages`, which bumps `package.json`, syncs `plugin.json` (via `scripts/sync-plugin-version.sh`), updates `CHANGELOG.md`, and regenerates the committed Copilot output (`pnpm build:copilot`; the Claude plugin is materialised at install time with the package version, so it has no committed output to regenerate) so the drift gates never fail on a version bump
|
|
68
68
|
3. **When "Version Packages" is merged**:
|
|
69
69
|
- Creates a git tag
|
|
70
70
|
- Publishes to npm — `pnpm publish-package` packs with `pnpm pack` and publishes with `npm publish --provenance --access public`. Authenticates via npm Trusted Publishing (OIDC): the release job's `id-token` permission lets npm exchange a GitHub OIDC token for a short-lived npm token at publish time, so no `NPM_TOKEN` secret or `.npmrc` auth config is required — only the one-time npm-side Trusted Publishing setup on npmjs.com (package → Access → Trusted Publishing → GitHub repo `jaybeeuu/agent-cortex` + workflow `.github/workflows/ci.yml`)
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -146,7 +146,7 @@ jobs:
|
|
|
146
146
|
run: pnpm test
|
|
147
147
|
|
|
148
148
|
claude-plugin-check:
|
|
149
|
-
name: Claude plugin check
|
|
149
|
+
name: Claude plugin materialiser check
|
|
150
150
|
needs: setup
|
|
151
151
|
runs-on: ubuntu-latest
|
|
152
152
|
steps:
|
|
@@ -175,16 +175,48 @@ jobs:
|
|
|
175
175
|
- name: Install dependencies
|
|
176
176
|
run: pnpm install --frozen-lockfile
|
|
177
177
|
|
|
178
|
-
#
|
|
179
|
-
#
|
|
180
|
-
#
|
|
181
|
-
#
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
|
|
178
|
+
# The claude/ subtree is retired — the installer is the only generator
|
|
179
|
+
# (plain `agent-cortex install claude` materialises ~/.agent-cortex/claude;
|
|
180
|
+
# `--output <dir>` is generate-only for tests). There is no committed
|
|
181
|
+
# output to diff, so this job validates the materialiser itself: it must
|
|
182
|
+
# produce a complete, structural plugin (generated + hand-authored pieces),
|
|
183
|
+
# no symlinks, no literal {{TOOL:/{{PATH:/{{SECTION: tokens, and a
|
|
184
|
+
# plugin.json version tracking the package — exactly what a real install
|
|
185
|
+
# would ship.
|
|
186
|
+
- name: Materialise the Claude plugin and run structural checks
|
|
185
187
|
run: |
|
|
186
|
-
|
|
187
|
-
|
|
188
|
+
set -euo pipefail
|
|
189
|
+
OUT="$RUNNER_TEMP/claude-plugin-check"
|
|
190
|
+
node bin/agent-cortex.mjs install claude --output "$OUT"
|
|
191
|
+
|
|
192
|
+
# structure: generated + hand-authored pieces all present
|
|
193
|
+
test -f "$OUT/.claude-plugin/plugin.json"
|
|
194
|
+
test -f "$OUT/agents/plan.md"
|
|
195
|
+
test -f "$OUT/agents/ralph.md"
|
|
196
|
+
test -f "$OUT/skills/tdd/SKILL.md"
|
|
197
|
+
test -f "$OUT/hooks.json"
|
|
198
|
+
test -f "$OUT/hooks/scripts/notify.mjs"
|
|
199
|
+
test -f "$OUT/.mcp.json"
|
|
200
|
+
test -f "$OUT/scripts/statusline-command.sh"
|
|
201
|
+
|
|
202
|
+
# flat-copy guarantee: no symlinks in the materialised tree
|
|
203
|
+
if [ -n "$(find "$OUT" -type l)" ]; then
|
|
204
|
+
echo "::error::symlinks found in materialised Claude plugin"
|
|
205
|
+
exit 1
|
|
206
|
+
fi
|
|
207
|
+
|
|
208
|
+
# token substitution: no literal tokens survive materialisation
|
|
209
|
+
TOKENS=$(grep -rlE '\{\{(TOOL|PATH|SECTION):' "$OUT" || true)
|
|
210
|
+
if [ -n "$TOKENS" ]; then
|
|
211
|
+
echo "::error::literal substitution tokens in materialised Claude plugin:"
|
|
212
|
+
echo "$TOKENS"
|
|
213
|
+
exit 1
|
|
214
|
+
fi
|
|
215
|
+
|
|
216
|
+
# plugin version tracks the package (never stale)
|
|
217
|
+
PKG_VERSION=$(node -p "require('./package.json').version")
|
|
218
|
+
PLUGIN_VERSION=$(node -p "require('$OUT/.claude-plugin/plugin.json').version")
|
|
219
|
+
test "$PKG_VERSION" = "$PLUGIN_VERSION"
|
|
188
220
|
|
|
189
221
|
- name: Check generated Copilot agent files are up to date
|
|
190
222
|
run: |
|
|
@@ -239,10 +271,11 @@ jobs:
|
|
|
239
271
|
# the string is split by argStringToArray on whitespace (single quotes
|
|
240
272
|
# survive literally), so each must be a single unquoted command token
|
|
241
273
|
# that runs a pnpm script. version-packages bumps versions, syncs
|
|
242
|
-
# plugin.json, THEN regenerates the committed
|
|
243
|
-
# (build:
|
|
244
|
-
#
|
|
245
|
-
#
|
|
274
|
+
# plugin.json, THEN regenerates the committed Copilot output
|
|
275
|
+
# (build:copilot re-derives agents/*.agent.md; the Claude plugin is
|
|
276
|
+
# materialised at install time with the package version, so nothing
|
|
277
|
+
# committed needs regenerating) before the action commits, so the
|
|
278
|
+
# Version Packages PR always passes the drift gates.
|
|
246
279
|
version: pnpm version-packages
|
|
247
280
|
publish: pnpm publish-package
|
|
248
281
|
commit: "chore: version packages"
|
package/AGENTS.md
CHANGED
|
@@ -13,7 +13,7 @@ available in the author's coding sessions.
|
|
|
13
13
|
|
|
14
14
|
```
|
|
15
15
|
agent-cortex/
|
|
16
|
-
├── package.json # PI package manifest (pi: { extensions, skills })
|
|
16
|
+
├── package.json # PI package manifest (pi: { extensions, skills, packages })
|
|
17
17
|
├── plugin.json # GitHub Copilot plugin manifest — agents, skills, MCP servers
|
|
18
18
|
├── agents/ # Custom agents — canonical composable <name>/ dirs
|
|
19
19
|
│ ├── *.agent.md # generated from <name>/ by scripts/build-copilot-agents.mjs
|
|
@@ -33,8 +33,12 @@ agent-cortex/
|
|
|
33
33
|
│ ├── README.md # Installation & usage
|
|
34
34
|
│ └── index.ts # Extension entrypoint
|
|
35
35
|
├── hooks/ # Canonical Claude Code hooks (hooks.json + scripts — see docs/claude-hooks.md)
|
|
36
|
-
│ └── claude/ # generated into
|
|
37
|
-
|
|
36
|
+
│ └── claude/ # generated into the plugin's hooks.json + hooks/ by bin/installers/claude.mjs
|
|
37
|
+
├── claude/ # Committed Claude user-settings template — merged into ~/.claude/settings.json on install
|
|
38
|
+
├── claude-extras/ # Hand-authored Claude plugin extras
|
|
39
|
+
│ ├── .mcp.json # MCP servers (context7, github) — copied into installs
|
|
40
|
+
│ └── scripts/ # statusline-command.sh — copied into installs (executable)
|
|
41
|
+
└── package.json # PI package manifest (pi: { extensions, skills, packages })
|
|
38
42
|
```
|
|
39
43
|
|
|
40
44
|
## Versioning
|
|
@@ -47,11 +51,24 @@ See the `style-versioning` skill for the full workflow.
|
|
|
47
51
|
|
|
48
52
|
Generated automatically by changesets. Do not edit `CHANGELOG.md` manually.
|
|
49
53
|
|
|
54
|
+
## Coding Conventions
|
|
55
|
+
|
|
56
|
+
- **Never block the main thread**: no `*Sync` functions (`readFileSync`, `spawnSync`, …).
|
|
57
|
+
Tooling code in `bin/`, `scripts/`, `lib/`, `hooks/`, and `test/` must be async —
|
|
58
|
+
enforced by `scripts/check-no-sync.mjs` (runs via `pnpm lint`). Skill-owned
|
|
59
|
+
scripts (`skills/*/scripts`) and `extensions/` are the remaining sync surfaces.
|
|
60
|
+
- **Share generic tooling helpers in `scripts/lib/`**: tooling code (installers under
|
|
61
|
+
`bin/installers/`, hooks, other scripts) imports shared utilities from `scripts/lib/`
|
|
62
|
+
(e.g. `compose-agent.mjs`, `fs.mjs`) rather than redefining them inline.
|
|
63
|
+
|
|
50
64
|
## Skill Conventions
|
|
51
65
|
|
|
52
66
|
- `SKILL.md` must include a YAML front-matter block with `name` and `description`.
|
|
53
67
|
- `description` must be ≤ 1024 characters. First sentence: what it does. Second: "Use when…".
|
|
54
|
-
- Keep `SKILL.md`
|
|
68
|
+
- Keep `SKILL.md` near the ~150-line target in `docs/skills/skill-anatomy.md`, overflowing into
|
|
69
|
+
purpose-named support files (`REFERENCE.md`, `EXAMPLES.md`, `FORMAT.md`). `style-tests`
|
|
70
|
+
deliberately sits at the top of that range rather than splitting — its principles must load
|
|
71
|
+
automatically with the skill.
|
|
55
72
|
- Add utility scripts to `scripts/` when an operation is deterministic and would otherwise be
|
|
56
73
|
regenerated each time (e.g. install scripts, scanners).
|
|
57
74
|
- Skill names use kebab-case and are grouped by prefix where related (e.g. `review-security`,
|
|
@@ -66,10 +83,17 @@ Generated automatically by changesets. Do not edit `CHANGELOG.md` manually.
|
|
|
66
83
|
from the canonical directories by the shared `bin/installers/copilot.mjs` code path behind both
|
|
67
84
|
`agent-cortex install copilot` and `scripts/build-copilot-agents.mjs` (thin wrapper), and
|
|
68
85
|
committed for Copilot CLI (plugin.json `agents: "agents/"` scans for `*.agent.md`); never edit
|
|
69
|
-
them by hand. The
|
|
70
|
-
`bin/installers/claude.mjs
|
|
71
|
-
|
|
72
|
-
|
|
86
|
+
them by hand. The Claude plugin is materialised by the install-time generator
|
|
87
|
+
`bin/installers/claude.mjs`: a plain `agent-cortex install claude` copies it into
|
|
88
|
+
`~/.agent-cortex/claude` (skills copied flat with `{{TOOL:...}}`/`{{PATH:...}}` substituted,
|
|
89
|
+
never symlinked), writes the marketplace manifest at
|
|
90
|
+
`~/.agent-cortex/.claude-plugin/marketplace.json`, merges the committed `claude/settings.json`
|
|
91
|
+
template into `~/.claude/settings.json`, and registers it with Claude Code via the
|
|
92
|
+
`claude plugin` CLI. The settings merge preserves personal config: the CLI owns exactly
|
|
93
|
+
`enabledPlugins` + `extraKnownMarketplaces`, and every other key is left untouched. Only
|
|
94
|
+
that settings template is committed under `claude/` — the generated plugin subtree is not;
|
|
95
|
+
hand-authored plugin extras live in `claude-extras/` (`.mcp.json`, `scripts/`), and
|
|
96
|
+
`--output <dir>` is the generate-only form (tests/CI materialiser checks); `ralph`
|
|
73
97
|
is authored natively in `agents-native/` and copied verbatim; the other agents compose from their
|
|
74
98
|
`claude/` harness dirs).
|
|
75
99
|
- Keep orchestration logic in the agent file; extract shared per-task workflow into a skill
|
|
@@ -82,6 +106,9 @@ Generated automatically by changesets. Do not edit `CHANGELOG.md` manually.
|
|
|
82
106
|
- Extensions are auto-discovered when the repo is installed as a PI package via `pi install`.
|
|
83
107
|
- Keep extensions lightweight: no internal LLM calls. Extensions observe events and provide
|
|
84
108
|
commands — they should not add token overhead.
|
|
109
|
+
- Register CLI flags from the extension factory (load time), never from a `session_start`
|
|
110
|
+
handler: PI matches parsed CLI flags against the extensions loaded at startup, so late
|
|
111
|
+
registration makes the flag fail with `Unknown option`.
|
|
85
112
|
- Extensions that persist data should write to `~/.pi/agent-cortex/` (global, cross-project)
|
|
86
113
|
and tag records with the project path for per-project slicing.
|
|
87
114
|
- PI extensions with Claude Code equivalents are ported to `hooks/claude/`; the port/reject
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.41.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a6b1929: `agent-cortex install pi` now materialises the pi config files as real CLI-managed files, replacing the legacy symlinks into the repo's `pi/` directory. `settings.json` is merged — the committed template supplies defaults, values already present (personal config and anything pi wrote) win, and the CLI owns the `packages` list with the repo path entry resolved against the settings file — so personal config survives re-install. `keybindings.json` is written from the template, refreshed when the template changes, and left alone once edited by hand. The generated header lives in a top-level `"//"` key because pi parses both files with a bare `JSON.parse`. `--dry-run` prints the plan (including "would remove symlink …") and `--output <dir>` keeps the generate-only semantics. Two caveats: because the live value wins, a changed default in the committed template only reaches fresh installs (edit the live file to adopt it); and `packages` is rebuilt from the template, so any `npm:` package added to the live file with `pi install npm:<pkg>` is dropped on the next install — declare long-lived packages in the repo template. An unparseable live `settings.json` is warned about and overwritten.
|
|
8
|
+
- d6ac5a5: Provision the pi packages agent-cortex needs (pi-questions for `ask_questions`, pi-web-access for `fetch_content`) on `agent-cortex install pi`. The package manifest now declares them under `pi.packages`, the installer installs any that the pi user scope is missing via the pi CLI (idempotent, warns and continues on failure), and `--no-provision` opts an offline machine out. The token-map `ask_user` / `web_fetch` mappings are no longer no-ops on a clean `~/.pi`.
|
|
9
|
+
- daa77c8: Encode test-quality rules into `style-tests`: the full agreed principle set (behaviour over
|
|
10
|
+
implementation, mocking only at external edges, module-boundary units, realistic
|
|
11
|
+
LocalStack/TestContainers integration, test independence, CI-only truth, spec-by-test, and
|
|
12
|
+
more), a blanket ban on asserting the static contents of a file (config, markdown, terraform,
|
|
13
|
+
snapshots) with the behaviour-not-inventory distinction, and test-data construction rules —
|
|
14
|
+
inline data, no shared mutable top-level fixtures, and small configurable factories over
|
|
15
|
+
repeated full literals. The content-assertion ban and the test-data rules land as red-flag rows
|
|
16
|
+
plus verification-checklist items. `style-tests/SKILL.md` deliberately occupies the full
|
|
17
|
+
~150-line `SKILL.md` budget so the principles load automatically, rather than splitting into
|
|
18
|
+
`REFERENCE.md`.
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- 3e2d149: Add the `agent-guardrails` pi extension: it appends behavioural circuit-breakers to the PI
|
|
23
|
+
system prompt once per user prompt — two-strikes retry limits, explicit check-in triggers, and
|
|
24
|
+
atomic-change discipline (first slice of `docs/ideas/improve-pi-system-prompt.md`).
|
|
25
|
+
- a6b1929: The bundled `agent-modes` pi extension now registers its `--agent <name>` CLI flag while the extension loads, instead of from its `session_start` handler. PI validates parsed CLI flags against the extensions present at startup, so the late registration meant `pi --agent <name>` failed with `Unknown option: --agent`. Registration is extracted into a `registerAgentFlag(pi, agents)` helper called directly by the extension factory.
|
|
26
|
+
- a6b1929: Materialise `~/.claude/settings.json` from a new committed `claude/settings.json` template when
|
|
27
|
+
`agent-cortex install claude` runs (parity with the pi installer's merge-keep-personal contract).
|
|
28
|
+
The template supplies defaults and personal values win; the installer owns exactly
|
|
29
|
+
`enabledPlugins` + `extraKnownMarketplaces`, so `permissions`, `hooks`, `env`, `statusLine` and
|
|
30
|
+
unknown keys are never touched. A legacy symlinked settings file is replaced with a real file,
|
|
31
|
+
`--dry-run` plans without writing, and `--output <dir>` leaves the user's Claude config alone.
|
|
32
|
+
- 140d9d4: Add a deterministic classifier to the `classify-bead` skill
|
|
33
|
+
(`skills/planning/classify-bead/scripts/classify-bead.mjs`). One command resolves an
|
|
34
|
+
existing `implementation-type` label, the legacy `## Type` field, then conservative
|
|
35
|
+
heuristic signals, and applies the label itself; only beads with no deterministic signal
|
|
36
|
+
escalate to the rubric subagent. `create-task` and `write-a-prd` now run the classifier
|
|
37
|
+
before spawning a subagent, and `--audit` reports the deterministic-vs-rubric split
|
|
38
|
+
over recent beads.
|
|
39
|
+
- e055123: Extract the generic async `isFile`/`isDirectory` stat wrappers into a shared `scripts/lib/fs.mjs` and import them from the claude, copilot, and pi installers instead of redefining them inline.
|
|
40
|
+
- 720d678: Add a milestone-notes discipline to the `run-pipeline-stage` skill: the stage-runner prompt and
|
|
41
|
+
SKILL.md now instruct agents to append a short checkpoint to the bead's notes (`bd update <id>
|
|
42
|
+
--append-notes`) at stage start and at each milestone, so a fresh session can resume from
|
|
43
|
+
`bd show <id>` alone if the original session dies mid-stage.
|
|
44
|
+
- 515b75e: Document why the pi installer's substituted skills are the sole pi skill source (the local pi/settings.json packages filter `{ source, "skills": [] }` keeps raw package skills out) and update pi/settings.json to the current runtime config (models, packages, compaction, TUI prefs).
|
|
45
|
+
- 11f9a36: Add a class-over-factory rule to `style-code`: when a module holds mutable state and exposes
|
|
46
|
+
methods that transform or manage it, model it as a class with public methods and native
|
|
47
|
+
`#private` fields rather than a factory function returning a closure of methods (TypeScript's
|
|
48
|
+
`private` modifier is compile-time only). Existing functional guidance for stateless components,
|
|
49
|
+
hooks, and pure transforms is unchanged.
|
|
50
|
+
|
|
51
|
+
## 1.40.0
|
|
52
|
+
|
|
53
|
+
### Minor Changes
|
|
54
|
+
|
|
55
|
+
- 1b6b8b8: `agent-cortex install claude` now materialises the plugin: home-scoped install into `~/.agent-cortex/claude`, copied (token-substituted, no symlinks) skills, marketplace manifest, and automatic registration with Claude Code. Installer toolchain is fully async (no `*Sync` — never block the main thread), enforced by a `check-no-sync` lint scanner.
|
|
56
|
+
- 65119b8: Map `ask_user` → `ask_questions` (pi-questions package) and `skill` → `read` in the pi column of token-map.json: pi agent modes regain interactive questioning (`ask_questions`) instead of dropping the tool with a startup warning, and skill references resolve to reading their SKILL.md. Notes and docs updated to record that `ask_questions` is provided by the pi-questions package.
|
|
57
|
+
- 1b6b8b8: Retire the committed `claude/` plugin subtree: `agent-cortex install claude` into `~/.agent-cortex/claude` (with automatic marketplace registration) is now the only way to build the Claude Code plugin. Hand-authored extras moved to `claude-extras/`, the `build:claude` script is removed, and CI validates the installer instead of diffing committed output.
|
|
58
|
+
|
|
59
|
+
### Patch Changes
|
|
60
|
+
|
|
61
|
+
- fcb16d7: Fix grill-with-docs failing to load: quote the front-matter description so skill parsers accept it.
|
|
62
|
+
|
|
3
63
|
## 1.39.0
|
|
4
64
|
|
|
5
65
|
### Minor Changes
|