Skip to content

Two-tier skill surfaces: admit internal library skills from the private plugin checkout - #244

Merged
jeonghun-jj-lee merged 3 commits into
mainfrom
242-two-tier-skill-surfaces-admit-internal-library-skills-from-the-private-plugin-checkout
Aug 2, 2026
Merged

Two-tier skill surfaces: admit internal library skills from the private plugin checkout#244
jeonghun-jj-lee merged 3 commits into
mainfrom
242-two-tier-skill-surfaces-admit-internal-library-skills-from-the-private-plugin-checkout

Conversation

@jeonghun-jj-lee

@jeonghun-jj-lee jeonghun-jj-lee commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Closes #242. Design of record: ADR-0003.

What

The library-skill resolver's surface guard becomes per-root — library roots are typed {path, surfaces}:

root admits why
dev's private plugin checkout {public, internal} checkout presence IS the eligibility proof — internal SKILL.md content exists only in the private repo
vendored public bundle {public} the only root a Marketplace user has; defense in depth on top of the extract pipeline

This gives brainstorming's publish/decompose steps (write-an-issue, break-into-subissuessurface: internal) their path to Amicode for team members, while the vendored bundle can never ship internal skills.

Acceptance criteria

  1. Checkout admits internal — typed-root resolver tests + a prep-integration test that a session on the checkout root indexes and stages surface: internal skills into the per-session skill dir. The real-checkout assertion flips per the ADR: develop now resolves from the checkout.
  2. Bundle excludes internal — the bundle form is public-only; DEFAULT_LIBRARY_ROOTS pins checkout={public, internal} / bundle={public}; first-root-wins by dir name preserved across tiers.
  3. Untagged/malformed dropped with a logged warning — from every root (the untagged drop now warns; malformed already did).
  4. Defense in depth — resolver drops internal from a public-only root even when present; packaging.test.ts walks the vendored artifact and reds on any non-public SKILL.md.
  5. skills.lock.jsonskills-public-v1.7.0 — the first public release cut after the amico-plugin#52 re-tags; implement-issue and break-into-subissues are absent from the vendored set (35 public skills), asserted by the AC5 packaging test (RED against the v1.6.0 bundle, GREEN against v1.7.0). sha256 verified by fetch:skills and against the release's published .sha256.

Back-compat

  • Bare-string roots in amicode.skillLibraryRoots keep working and admit public-only; the schema (anyOf string | typed object) carries the back-compat note and drops the stale surface: product description.
  • Settings parsing (parseLibraryRootSpecs) validates typed entries, drops malformed ones with a warning, never throws.

Marketplace impact (intended by policy, per ADR)

Marketplace users lose implement-issue and break-into-subissues at the next public release — the two re-tagged skills shipped in the bundle up to v1.6.0. Team members with the checkout keep them via the first root.

…code#242)

The library-skill resolver's surface guard becomes per-root (ADR-0003):
roots are typed {path, surfaces}; the private plugin checkout admits
{public, internal} (checkout presence IS the eligibility proof), the
vendored bundle admits {public} only. Bare-string roots keep working as
public-only (settings back-compat). Untagged skills are now dropped with
a logged warning from every root; the real-checkout assertions flip —
internal dev-workflow skills (e.g. develop) now resolve from the checkout.

AC5 (skills.lock bump to the post-retag public release) is deferred: the
companion plugin re-tag (amico-plugin#52) has not landed, so no such
release exists yet. Tracked on the issue.
The v1.7.0 artifact excludes implement-issue and break-into-subissues
(now surface: internal per amico-plugin#52): 35 public skills, 0 held,
sha256 verified by fetch:skills. Completes the lock-bump acceptance
item; the resolver change on this branch is what gives those internal
skills their path back on team checkouts.
…ard (amicode#242)

Settings back-compat (ADR-0003): amicode.skillLibraryRoots accepts typed
{path, surfaces} roots alongside bare strings; strings keep the pre-ADR
public-only meaning, malformed entries drop with a logged warning, and the
schema's stale product-tag description is replaced by the back-compat note.

packaging.test.ts gains the artifact-level guard: every vendored SKILL.md
carries surface: public (AC4 — a corrupt extract reds here, not in prod),
and the #52-retagged dev-workflow skills are absent from the vendored set
(AC5 — green against the v1.7.0 bundle, red against v1.6.0).
@jeonghun-jj-lee
jeonghun-jj-lee marked this pull request as ready for review August 2, 2026 20:32
@jeonghun-jj-lee
jeonghun-jj-lee requested review from jack-champagne and removed request for jack-champagne August 2, 2026 20:32
@jeonghun-jj-lee
jeonghun-jj-lee merged commit 167e0e2 into main Aug 2, 2026
6 checks passed
@jeonghun-jj-lee
jeonghun-jj-lee deleted the 242-two-tier-skill-surfaces-admit-internal-library-skills-from-the-private-plugin-checkout branch August 2, 2026 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Two-tier skill surfaces: admit internal library skills from the private plugin checkout

1 participant