potiuk opened a new pull request, #247:
URL: https://github.com/apache/airflow-steward/pull/247

   ## Summary
   
   Adds a fourth skills-dir convention — **Pattern D, single
   directory symlink** — to the `setup-steward` adopter taxonomy:
   one of `.claude/skills` / `.github/skills` is itself a directory
   symlink to the other, so both paths always reflect the same set
   of skills without per-skill plumbing. Adding a new skill — project-
   native or framework-installed — only needs one entry in the
   canonical directory; the mirror is automatic.
   
   Two orientations:
   
   - **D.1** — canonical content under `.github/skills/`,
     `.claude/skills` is the symlink. Natural for projects that
     use `.github/` as their canonical infra-glue root (e.g.
     apache/airflow).
   - **D.2** — canonical content under `.claude/skills/`,
     `.github/skills` is the symlink. Natural for flat-Pattern-A
     projects that want a `.github/skills/` view too without
     duplicating content.
   
   Pattern D coexists with project-native skills and framework
   symlinks in the same canonical directory — the directory symlink
   fans them out across both paths automatically.
   
   ## Pre-Pattern-D consolidation
   
   When both `.claude/skills/` and `.github/skills/` already exist
   as regular directories with **independent, non-aliased content**,
   applying Pattern D would clobber the side that becomes the
   symlink. The adopt flow now surfaces the conflict and proposes
   a one-time consolidation — move every skill into one side,
   replace the other with a directory symlink — before wiring any
   framework symlink. The framework **never auto-renames** adopter
   content; if the user declines or unresolved name collisions
   block consolidation, the flow falls back to Pattern A.
   
   ## Files
   
   - `.claude/skills/setup-steward/conventions.md` — Pattern D
     section (both orientations), detection-algorithm branches,
     table row, consolidation flow, ambiguous-case rules.
   - `.claude/skills/setup-steward/adopt.md` — Step 0.4 calls
     the consolidation flow on ambiguous detection; Step 7 splits
     the `.gitignore` template per pattern; Step 8 wires
     framework symlinks at the canonical side only for D.
   - `.claude/skills/setup-steward/upgrade.md` — Step 4b adds a
     Pattern D branch (overwrite `setup-steward` at the canonical
     side); Step 6 refreshes per-skill symlinks at the canonical
     side only.
   - `.claude/skills/setup-steward/verify.md` — Check 4 splits
     the required `.gitignore` entries per pattern.
   - `.claude/skills/setup-steward/unadopt.md` — Per-pattern
     inventory + execute-removal; the directory symlink itself is
     adopter-owned and preserved.
   - `.claude/skills/setup-steward/worktree-init.md` —
     Per-pattern layer count for worktree framework-skill symlinks.
   - `.claude/skills/setup-steward/SKILL.md`,
     `docs/setup/install-recipes.md`, `docs/setup/unadopt.md` —
     same per-pattern guidance reflected in the contributor-facing
     docs.
   
   ## Test plan
   
   - [ ] Apply Pattern D to an already-adopted Pattern B repo
         (apache/airflow), run \`/setup-steward upgrade\`, confirm
         framework symlinks land at \`.github/skills/<n>\` only and
         every framework skill is reachable from
         \`.claude/skills/<n>\` via the directory symlink.
   - [ ] Verify \`.gitignore\` after the consume PR has only the
         canonical-side ignore lines and the runtime framework
         symlinks remain gitignored.
   - [ ] Run \`/setup-steward verify\` from both the main checkout
         and a linked worktree; confirm all checks pass.
   - [ ] Dry-run \`/setup-steward unadopt\` on the Pattern D repo;
         confirm the directory symlink itself is in the
         *preserved* section.
   
   ---
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to