-
Notifications
You must be signed in to change notification settings - Fork 2
fix(architecture,conventions): correct the CLAUDE_PLUGIN_DATA substitution rationale and adopt upstream-drift #2299
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -68,5 +68,5 @@ Graceful degradation — where a named step below is not available in the consum | |
|
|
||
| Observed failure history — patterns that have actually bitten. Add here when a new one surfaces. | ||
|
|
||
| - **The durable candidate artifact is a per-project memory-tier file, never `${CLAUDE_PLUGIN_DATA}`.** That token does not substitute in skill markdown content (it is a hook/monitor/MCP path substitution only), and even resolved it points at a plugin-global dir that collides candidates across projects. The artifact resolves through the marketplace topic-docs convention (the plugin's topic-docs [binding](../../reference/topic-docs.md)) — memory tier, default `.work/<topic-slug>/`. A `${CLAUDE_PROJECT_DIR}/.claude/...` path is also wrong: `.claude/` generated output is reserved for observability, and an unignored artifact there leaks scan output into git. | ||
| - **The durable candidate artifact is a per-project memory-tier file, never `${CLAUDE_PLUGIN_DATA}`.** That token **does** resolve in skill content — the plugins reference puts skill and agent content in the "anywhere the placeholder appears" row alongside hook and monitor commands (<https://code.claude.com/docs/en/plugins-reference>, §Environment variables, fetched 2026-08-12 UTC; recheck trigger: a read-time re-fetch of that section finds the "Skill and agent content" row changed or removed). The rule rests on **where the path points**, not on whether it expands: the same page resolves the token to `~/.claude/plugins/data/<id>/` — a plugin-global directory with no project dimension, so candidates from every codebase collide in one place — records that uninstalling from the last remaining scope deletes that directory by default, and names its use as installed dependencies, generated code, and caches. The artifact resolves through the marketplace topic-docs convention (the plugin's topic-docs [binding](../../reference/topic-docs.md)) — memory tier, default `.work/<topic-slug>/`. A `${CLAUDE_PROJECT_DIR}/.claude/...` path is also wrong: `.claude/` generated output is reserved for observability, and an unignored artifact there leaks scan output into git. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The trigger only fires when the "Skill and agent content" substitution row changes, but this same record also relies on three separate upstream facts: the resolved directory, last-scope uninstall deletion, and the directory's documented uses. If any of those change while the substitution row remains intact, the trigger never fires and the rationale becomes stale despite being advertised as a conforming four-part record. Expand the trigger to cover divergence in every upstream fact restated here, consistent with Useful? React with 👍 / 👎. |
||
| - **Scan-agent claims are shipped only after Phase 1.5 reproduction.** Explore agents have a demonstrated error rate: a real run reported a service "registered but never composed — a bug in the seam" that one grep disproved (it *is* consumed, via a different consumer, with tests). Any candidate headed for a `Strong` badge and any runtime-bug / dead-code claim is reproduced against the actual code before it reaches the user-facing report — the report lends every claim its authority, so an unreproduced overstatement is cheap to make and expensive to reputation. | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The claim that this is the plugin's only upstream-specific surface is contradicted by
plugins/architecture/skills/improve/actions/deepening.md:26, which directs consumers to the upstream-owned Agent tool syntaxsubagent_type=Explorewithout a basis, date, or trigger. Because this row explicitly says it covers the whole plugin rather than the linked bullet, readers are told the plugin was swept and conforms when another durable operational surface remains unstamped; either scope the row to the bullet or disposition the other upstream-specific surfaces before making the plugin-wide claim.Useful? React with 👍 / 👎.