Parent
Source: handoff-inbox item 20260723-092605-architecture-improve-deepening-audit (producer: SW2030 consumer audit of architecture@0.3.5, full end-to-end deepening run).
What to build
Fix the broken default location for the durable candidate artifact in the deepening lens. actions/deepening.md Phase 2 currently instructs: "Default location: ${CLAUDE_PLUGIN_DATA}/deepening-candidates-<timestamp>.md", and evals/evals.json eval #1 bakes the same path into its expectation. Two independent defects, both verified against current official docs (fetched 2026-07-23):
- The token does not substitute in skill bodies. The skills reference ("Available string substitutions") enumerates the skill-content substitution set:
${CLAUDE_SESSION_ID}, ${CLAUDE_EFFORT}, ${CLAUDE_SKILL_DIR}, ${CLAUDE_PROJECT_DIR} + named args. ${CLAUDE_PLUGIN_DATA} / ${CLAUDE_PLUGIN_ROOT} are path substitutions for hook/monitor commands and MCP/LSP server configs only (plugins-reference "Environment variables"). A consumer following the default literally writes to an unexpanded literal ${CLAUDE_PLUGIN_DATA}/... directory.
- Wrong scope even if it resolved.
${CLAUDE_PLUGIN_DATA} → ~/.claude/plugins/data/{id}/ — plugin-global, shared across every project. Deepening candidates are per-codebase; a global dir collides candidates across projects.
The consumer audit observed the honor-project-convention override branch working correctly (it routed to the repo's own work-artifact convention), which masked the broken default in that run. Keep that branch unchanged.
Fix: change the default to a ${CLAUDE_PROJECT_DIR}-based per-project path (e.g. ${CLAUDE_PROJECT_DIR}/.claude/architecture/deepening-candidates-<timestamp>.md), update eval #1's expectation to match. Docs-verified, one line each. Semver + CHANGELOG per repo convention.
Acceptance criteria
Blocked by
None — can start immediately.
Parent
Source: handoff-inbox item
20260723-092605-architecture-improve-deepening-audit(producer: SW2030 consumer audit of architecture@0.3.5, full end-to-end deepening run).What to build
Fix the broken default location for the durable candidate artifact in the deepening lens.
actions/deepening.mdPhase 2 currently instructs: "Default location:${CLAUDE_PLUGIN_DATA}/deepening-candidates-<timestamp>.md", andevals/evals.jsoneval #1 bakes the same path into its expectation. Two independent defects, both verified against current official docs (fetched 2026-07-23):${CLAUDE_SESSION_ID},${CLAUDE_EFFORT},${CLAUDE_SKILL_DIR},${CLAUDE_PROJECT_DIR}+ named args.${CLAUDE_PLUGIN_DATA}/${CLAUDE_PLUGIN_ROOT}are path substitutions for hook/monitor commands and MCP/LSP server configs only (plugins-reference "Environment variables"). A consumer following the default literally writes to an unexpanded literal${CLAUDE_PLUGIN_DATA}/...directory.${CLAUDE_PLUGIN_DATA}→~/.claude/plugins/data/{id}/— plugin-global, shared across every project. Deepening candidates are per-codebase; a global dir collides candidates across projects.The consumer audit observed the honor-project-convention override branch working correctly (it routed to the repo's own work-artifact convention), which masked the broken default in that run. Keep that branch unchanged.
Fix: change the default to a
${CLAUDE_PROJECT_DIR}-based per-project path (e.g.${CLAUDE_PROJECT_DIR}/.claude/architecture/deepening-candidates-<timestamp>.md), update eval #1's expectation to match. Docs-verified, one line each. Semver + CHANGELOG per repo convention.Acceptance criteria
actions/deepening.mdPhase 2 default artifact path uses a substitution documented to work in skill markdown content (${CLAUDE_PROJECT_DIR}-based), per-project scopedevals/evals.jsoneval chore: initialize marketplace scaffold #1 expectation matches the new default${CLAUDE_PLUGIN_DATA}references remain in skill markdown content of this pluginBlocked by
None — can start immediately.