diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/README.md b/.github/projects/active/portable-ai-plugin-restructure/issues/README.md new file mode 100644 index 000000000..41cdf4a53 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/README.md @@ -0,0 +1,57 @@ +--- +title: "Portable AI Plugin Restructure Issue Drafts" +description: "Local parent and child GitHub issue drafts for the portable AI plugin restructure programme." +version: "v0.2.0" +last_updated: "2026-05-14" +file_type: "project" +maintainer: "LightSpeed Team" +authors: ["LightSpeed Team", "Codex"] +license: "GPL-3.0" +tags: ["issues", "planning", "ai-ops", "plugin", "restructure"] +domain: "governance" +stability: "active" +--- + +# Portable AI Plugin Restructure Issue Drafts + +These files are the local source drafts for the GitHub issues now posted to +`lightspeedwp/.github`. They use the repository issue templates from +`.github/ISSUE_TEMPLATE/` and now include live GitHub issue URLs in their +frontmatter. + +## Parent Epics + +| Issue | Draft | Scope | +| --- | --- | --- | +| [#282](https://github.com/lightspeedwp/.github/issues/282) | `parents/01-epic-planning-control-and-skeleton.md` | [Epic] Portable AI plugin restructure: planning control and target skeleton | +| [#283](https://github.com/lightspeedwp/.github/issues/283) | `parents/02-epic-portable-source-migration.md` | [Epic] Portable AI plugin restructure: source asset migration | +| [#284](https://github.com/lightspeedwp/.github/issues/284) | `parents/03-epic-core-plugin-and-tool-compatibility.md` | [Epic] Portable AI plugin restructure: core plugin and compatibility | +| [#285](https://github.com/lightspeedwp/.github/issues/285) | `parents/04-epic-validation-docs-and-rollout.md` | [Epic] Portable AI plugin restructure: validation, docs, pilot, and release | + +## Child Issue Batches + +| Batch | Folder | Purpose | Issues | +| --- | --- | --- | --- | +| 00 | `children/batch-00-planning-control/` | Foundation/planning | [#286](https://github.com/lightspeedwp/.github/issues/286), [#287](https://github.com/lightspeedwp/.github/issues/287), [#288](https://github.com/lightspeedwp/.github/issues/288) | +| 01 | `children/batch-01-skeleton-boundary/` | Target skeleton and .github boundary | [#289](https://github.com/lightspeedwp/.github/issues/289), [#290](https://github.com/lightspeedwp/.github/issues/290), [#291](https://github.com/lightspeedwp/.github/issues/291), [#292](https://github.com/lightspeedwp/.github/issues/292) | +| 02 | `children/batch-02-portable-migration/` | Portable source migration | [#293](https://github.com/lightspeedwp/.github/issues/293), [#294](https://github.com/lightspeedwp/.github/issues/294), [#295](https://github.com/lightspeedwp/.github/issues/295), [#296](https://github.com/lightspeedwp/.github/issues/296), [#297](https://github.com/lightspeedwp/.github/issues/297), [#298](https://github.com/lightspeedwp/.github/issues/298) | +| 03 | `children/batch-03-skills-cookbook/` | Skills and cookbook | [#299](https://github.com/lightspeedwp/.github/issues/299), [#300](https://github.com/lightspeedwp/.github/issues/300), [#301](https://github.com/lightspeedwp/.github/issues/301), [#302](https://github.com/lightspeedwp/.github/issues/302), [#303](https://github.com/lightspeedwp/.github/issues/303), [#304](https://github.com/lightspeedwp/.github/issues/304) | +| 04 | `children/batch-04-pilot-plugin/` | Pilot plugin package | [#305](https://github.com/lightspeedwp/.github/issues/305), [#306](https://github.com/lightspeedwp/.github/issues/306), [#307](https://github.com/lightspeedwp/.github/issues/307), [#308](https://github.com/lightspeedwp/.github/issues/308), [#309](https://github.com/lightspeedwp/.github/issues/309), [#310](https://github.com/lightspeedwp/.github/issues/310) | +| 05 | `children/batch-05-validation-reset/` | Validation reset | [#311](https://github.com/lightspeedwp/.github/issues/311), [#312](https://github.com/lightspeedwp/.github/issues/312), [#313](https://github.com/lightspeedwp/.github/issues/313), [#314](https://github.com/lightspeedwp/.github/issues/314), [#315](https://github.com/lightspeedwp/.github/issues/315), [#316](https://github.com/lightspeedwp/.github/issues/316) | +| 06 | `children/batch-06-pilot-release/` | Pilot, future packs, and release | [#317](https://github.com/lightspeedwp/.github/issues/317), [#318](https://github.com/lightspeedwp/.github/issues/318), [#319](https://github.com/lightspeedwp/.github/issues/319), [#320](https://github.com/lightspeedwp/.github/issues/320), [#321](https://github.com/lightspeedwp/.github/issues/321) | + +## Parent Mapping + +- #282 owns batches 00 and 01. +- #283 owns batches 02 and 03. +- #284 owns batch 04, with #317 cross-linked for compatibility smoke testing. +- #285 owns batches 05 and 06. + +## Labels And Branch Prefixes + +- Parent epics use `status:needs-planning`, `priority:important`, `type:epic`, and relevant area/type labels. +- AI operations work uses `type:ai-ops` and branch prefix `ai/`. +- Refactor work uses branch prefix `refactor/`. +- Documentation work uses branch prefix `docs/`. +- Build and validation work uses branch prefix `ci/` or `build/`. +- Maintenance work uses branch prefix `maintenance/` or `chore/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-01-audit-current-asset-inventory-and-migration-map.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-01-audit-current-asset-inventory-and-migration-map.md new file mode 100644 index 000000000..ab00fd8f0 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-01-audit-current-asset-inventory-and-migration-map.md @@ -0,0 +1,59 @@ +--- +name: "Audit" +about: "Propose, conduct, or document a security, accessibility, code, or process audit." +title: "[Audit] Inventory AI assets and create the migration decision map" +labels: [status:needs-audit, priority:important, type:ai-ops, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/286" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Audit Summary + +Audit every current AI and automation asset before files move. Produce the +canonical migration decision map for agents, instructions, prompts, schemas, +workflows, templates, saved replies, and scripts. + +Parent epic: #282 (). + +## Audit Checklist / Scope + +- [ ] Inventory `.github/agents`, `.github/instructions`, `.github/prompts`, `.github/schemas`, `.github/workflows`, `scripts/agents`, and `scripts/validation`. +- [ ] Record decision for each item: keep, move, convert, archive, delete, or defer. +- [ ] Capture target path for every moved or converted asset. +- [ ] Flag assets with hard-coded `.github/*` paths. +- [ ] Store the table in the active project folder. + +## Findings / Risks + +Known risks include stale paths, mixed repo/project AI guidance, and prompts +that may need conversion into skills or cookbook recipes. + +## Remediation Actions + +- [ ] Link all follow-up child issues to rows in the migration map. +- [ ] Do not delete old paths until the map and link audit are complete. + +## Acceptance Criteria + +- [ ] Audit scope and checklist completed. +- [ ] Findings and risks documented. +- [ ] Remediation actions assigned and tracked. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. + +## Additional Context + +Reference PRD section: "Phase 0: Freeze, Baseline, And Inventory". + +### Definition of Ready (DoR) + +- [ ] Audit scope, checklist, and goals defined. +- [ ] Areas/components listed. +- [ ] Dependencies and standards mapped. + +### Definition of Done (DoD) + +- [ ] Audit performed and findings documented. +- [ ] Remediation actions assigned. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-02-audit-baseline-validation-and-dependency-state.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-02-audit-baseline-validation-and-dependency-state.md new file mode 100644 index 000000000..b3f32bd1a --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-02-audit-baseline-validation-and-dependency-state.md @@ -0,0 +1,62 @@ +--- +name: "Audit" +about: "Propose, conduct, or document a security, accessibility, code, or process audit." +title: "[Audit] Capture baseline validation, test, and dependency state" +labels: [status:needs-audit, priority:important, area:ci, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/287" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Audit Summary + +Capture the current validation and dependency baseline before restructuring, +including `npm ci`, validators, tests, coverage output, and dependency audit +results. + +Parent epic: #282 (). + +## Audit Checklist / Scope + +- [ ] Record current branch and commit. +- [ ] Run or document `npm ci`. +- [ ] Run `npm run validate:agents`. +- [ ] Run `npm run validate:workflows`. +- [ ] Run `npm run validate:json:schemas`. +- [ ] Run `npm test`. +- [ ] Run `npm audit` or capture existing vulnerability count. +- [ ] Note which commands are mutating or noisy. + +## Findings / Risks + +Known baseline risks: invalid JSON comments in schema files, mutating +validation commands, zero coverage output, and dependency vulnerabilities. + +## Remediation Actions + +- [ ] Convert findings into validation reset child issues. +- [ ] Keep raw command outputs or summaries in the active project folder. + +## Acceptance Criteria + +- [ ] Audit scope and checklist completed. +- [ ] Findings and risks documented. +- [ ] Remediation actions assigned and tracked. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. + +## Additional Context + +This issue should not fix the findings; it records the pre-migration baseline. + +### Definition of Ready (DoR) + +- [ ] Audit scope, checklist, and goals defined. +- [ ] Areas/components listed. +- [ ] Dependencies and standards mapped. + +### Definition of Done (DoD) + +- [ ] Audit performed and findings documented. +- [ ] Remediation actions assigned. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-03-task-create-milestone-label-and-issue-linking-plan.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-03-task-create-milestone-label-and-issue-linking-plan.md new file mode 100644 index 000000000..a72ae2420 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-00-planning-control/00-03-task-create-milestone-label-and-issue-linking-plan.md @@ -0,0 +1,56 @@ +--- +name: "Task" +about: "Propose a well-scoped unit of work: template tweaks, config updates, copy edits, etc." +title: "[Task] Create milestone, label, and parent-child issue linking plan" +labels: [status:needs-triage, priority:normal, area:core] +assignees: [] +projects: [] +milestone: "" +file_type: task +github_issue: "https://github.com/lightspeedwp/.github/issues/288" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Task Summary + +Define how the restructure issues will be posted, labelled, linked, and batched +in GitHub before creating the full issue set. + +Parent epic: #282 (). + +## Acceptance Criteria + +- [ ] Milestone name and scope are defined. +- [ ] Parent epic issue order is documented. +- [ ] Child issue posting order is documented. +- [ ] Required labels are listed. +- [ ] Parent issue numbers are added back to local child drafts after posting. +- [ ] Correct branch prefix for PR: `chore/` or `task/`. + +## Steps / Checklist + +- [ ] Choose milestone name, likely `Portable AI Plugin Restructure`. +- [ ] Create four parent epics first. +- [ ] Create child issues batch by batch. +- [ ] Add child issue links to parent epics. +- [ ] Update local issue drafts with GitHub issue numbers. + +## Dependencies + +Depends on the local issue draft pack in this active project folder. + +## Additional Context + +This prevents losing track of issue relationships once drafts are posted to +GitHub. + +## Definition of Ready (DoR) + +- [ ] Task described and scoped. +- [ ] Estimate added if relevant. + +## Definition of Done (DoD) + +- [ ] Task completed and documented. +- [ ] Changelog entry prepared for PR. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-01-task-create-target-folder-skeleton.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-01-task-create-target-folder-skeleton.md new file mode 100644 index 000000000..818d04282 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-01-task-create-target-folder-skeleton.md @@ -0,0 +1,57 @@ +--- +name: "Task" +about: "Propose a well-scoped unit of work: template tweaks, config updates, copy edits, etc." +title: "[Task] Create target top-level folder skeleton" +labels: [status:needs-triage, priority:important, area:core] +assignees: [] +projects: [] +milestone: "" +file_type: task +github_issue: "https://github.com/lightspeedwp/.github/issues/289" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Task Summary + +Create the requested top-level folder structure without moving production +assets yet. + +Parent epic: #282 (). + +## Acceptance Criteria + +- [ ] `/.schemas` exists. +- [ ] `/agents` exists. +- [ ] `/cookbook` exists. +- [ ] `/hooks` exists. +- [ ] `/instructions` exists. +- [ ] `/plugins` exists. +- [ ] `/skills` exists. +- [ ] `/workflows` exists. +- [ ] Existing `.github` behaviour is unchanged. +- [ ] Correct branch prefix for PR: `chore/` or `task/`. + +## Steps / Checklist + +- [ ] Add `.gitkeep` or README/index placeholders where needed. +- [ ] Avoid moving existing files in this issue. +- [ ] Confirm `git status` only shows new skeleton files. + +## Dependencies + +Depends on the approved PRD and target structure. + +## Additional Context + +This is intentionally a tiny first implementation slice. + +## Definition of Ready (DoR) + +- [ ] Task described and scoped. +- [ ] Estimate added if relevant. + +## Definition of Done (DoD) + +- [ ] Task completed and documented. +- [ ] Changelog entry prepared for PR. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-02-document-folder-ownership-indexes.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-02-document-folder-ownership-indexes.md new file mode 100644 index 000000000..f40da5742 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-02-document-folder-ownership-indexes.md @@ -0,0 +1,54 @@ +--- +name: "Documentation" +about: "Request new documentation or propose updates/clarifications to existing docs." +title: "[Documentation] Add ownership indexes for new top-level folders" +labels: [status:needs-triage, priority:normal, area:documentation] +github_issue: "https://github.com/lightspeedwp/.github/issues/290" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## What documentation is needed? + +Add README or index files explaining ownership, allowed content, and migration +rules for the new top-level folders. + +Parent epic: #282 (). + +## Why is this documentation important? + +The restructure changes long-standing `.github` placement rules. Each folder +needs a clear contract so future agents and maintainers do not recreate the +same ambiguity. + +## Acceptance Criteria + +- [ ] `/.schemas/README.md` explains schema ownership. +- [ ] `/agents/README.md` explains portable agent specs. +- [ ] `/cookbook/README.md` explains recipes and examples. +- [ ] `/hooks/README.md` explains safe hooks and adapters. +- [ ] `/instructions/README.md` explains portable instruction scope. +- [ ] `/plugins/README.md` explains plugin family strategy. +- [ ] `/skills/README.md` explains skill folder rules. +- [ ] `/workflows/README.md` distinguishes agentic workflows from GitHub Actions. +- [ ] Documentation is accessible and easy to find. +- [ ] PR uses correct branch prefix `docs/`. + +## Additional Context + +Use UK English and keep the indexes concise. Link to the active PRD. + +## Definition of Ready (DoR) + +- [ ] Documentation need is clear and well-defined. +- [ ] Related docs/issues or files linked. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if relevant. +- [ ] Milestone/release assigned if applicable. + +## Definition of Done (DoD) + +- [ ] Documentation meets org standards and guidelines. +- [ ] Changelog entry prepared for PR. +- [ ] Documentation reviewed for clarity and accessibility. +- [ ] Screenshots/code examples included if relevant. +- [ ] PR uses correct branch prefix `docs/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-03-refactor-file-organisation-boundary.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-03-refactor-file-organisation-boundary.md new file mode 100644 index 000000000..aff74a9f0 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-03-refactor-file-organisation-boundary.md @@ -0,0 +1,70 @@ +--- +name: "Code Refactor" +about: "Request or propose a code refactoring or review to improve code quality, maintainability, and consistency." +title: "[Refactor] Update file organisation rules for GitHub-native vs portable assets" +labels: [status:needs-review, priority:important, area:core, area:documentation] +github_issue: "https://github.com/lightspeedwp/.github/issues/291" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Is your code refactoring request related to a problem? + +The current file-organisation guidance says operational assets should stay +under `.github`, which conflicts with the new portable plugin structure. + +Parent epic: #282 (). + +## Describe the Refactoring / Review Task + +Update `.github/instructions/file-organisation.instructions.md` and related +references so they distinguish GitHub-native repo files from portable AI +plugin assets. + +## Use Case + +Maintainers and AI agents need unambiguous placement rules during and after the +restructure. + +## Alternatives Considered + +Keeping the old rule would continue to trap portable AI assets under `.github`. + +## Additional Context + +Do not move files in this issue. This issue updates the placement policy only. + +## Example Code Snippets + +```text +Before: All operational artefacts belong under .github. +After: GitHub-native artefacts stay under .github; portable AI assets belong in top-level source folders. +``` + +## Refactoring / Review Checklist + +- [ ] Guidance defines GitHub-native files. +- [ ] Guidance defines portable plugin assets. +- [ ] Guidance maps reports and active project files. +- [ ] Existing links to file organisation guidance still resolve. +- [ ] No production assets are moved. +- [ ] Documentation updated as needed. +- [ ] PR uses correct branch prefix `refactor/`. + +## Code Area(s) Impacted + +- [ ] Other: documentation and AI instruction placement rules. + +## Definition of Ready (DoR) + +- [ ] Refactoring goals and scope defined. +- [ ] Code area(s) and impact listed. +- [ ] Estimate added. +- [ ] Dependencies mapped. + +## Definition of Done (DoD) + +- [ ] Code meets org coding standards. +- [ ] Documentation updated if needed. +- [ ] Changelog entry prepared for PR. +- [ ] Tests added/updated. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-04-refactor-repo-local-copilot-instructions.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-04-refactor-repo-local-copilot-instructions.md new file mode 100644 index 000000000..bee53ebbe --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-01-skeleton-boundary/01-04-refactor-repo-local-copilot-instructions.md @@ -0,0 +1,72 @@ +--- +name: "Code Refactor" +about: "Request or propose a code refactoring or review to improve code quality, maintainability, and consistency." +title: "[Refactor] Scope `.github` Copilot instructions to this repo only" +labels: [status:needs-review, priority:important, type:ai-ops, area:documentation] +github_issue: "https://github.com/lightspeedwp/.github/issues/292" +github_parent: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Is your code refactoring request related to a problem? + +`.github/custom-instructions.md` currently treats `.github` as the home for +general LightSpeed WordPress AI assets, which conflicts with the new portable +plugin boundary. + +Parent epic: #282 (). + +## Describe the Refactoring / Review Task + +Rewrite the repo-local Copilot instruction entrypoint so it explains how to +maintain this `.github` repository, while pointing portable WordPress and AI +ops assets to the new top-level folders. + +## Use Case + +Future AI agents should not place block theme, block plugin, or generic +LightSpeed skills in `.github` by default. + +## Alternatives Considered + +Leaving the file unchanged would preserve the local workaround but undermine +the plugin restructure. + +## Additional Context + +Keep the current org standards, UK English, security, accessibility, and +performance requirements. + +## Example Code Snippets + +```text +Before: Use .github/prompts and .github/instructions for shared project AI files. +After: Use .github for this repo's GitHub-native maintenance; use top-level source folders for portable AI assets. +``` + +## Refactoring / Review Checklist + +- [ ] `.github/custom-instructions.md` explains the new boundary. +- [ ] Links to portable source folders are added. +- [ ] Stale references to missing `_index.instructions.md` are removed or corrected. +- [ ] No reusable WordPress project guidance is presented as repo-local only. +- [ ] Documentation updated as needed. +- [ ] PR uses correct branch prefix `refactor/`. + +## Code Area(s) Impacted + +- [ ] Other: Copilot and AI instruction files. + +## Definition of Ready (DoR) + +- [ ] Refactoring goals and scope defined. +- [ ] Code area(s) and impact listed. +- [ ] Estimate added. +- [ ] Dependencies mapped. + +## Definition of Done (DoD) + +- [ ] Code meets org coding standards. +- [ ] Documentation updated if needed. +- [ ] Changelog entry prepared for PR. +- [ ] Tests added/updated. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-01-audit-classify-github-native-files.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-01-audit-classify-github-native-files.md new file mode 100644 index 000000000..41b43f75b --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-01-audit-classify-github-native-files.md @@ -0,0 +1,58 @@ +--- +name: "Audit" +about: "Propose, conduct, or document a security, accessibility, code, or process audit." +title: "[Audit] Classify GitHub-native files that must remain in `.github`" +labels: [status:needs-audit, priority:important, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/293" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Audit Summary + +Identify the files and folders that must remain in `.github` for GitHub +community health, workflow, template, and repo maintenance behaviour. + +Parent epic: #283 (). + +## Audit Checklist / Scope + +- [ ] Classify issue, PR, and discussion templates. +- [ ] Classify saved replies, labels, funding, dependabot, and workflows. +- [ ] Classify repo-local Copilot and agent files. +- [ ] Flag any current `.github` files that are portable AI assets. +- [ ] Add results to the migration decision map. + +## Findings / Risks + +Risk: moving GitHub-native files out of `.github` could break organisation +defaults or workflow execution. + +## Remediation Actions + +- [ ] Add "keep in `.github`" decisions to the migration map. +- [ ] Create follow-up issues for files that should move. + +## Acceptance Criteria + +- [ ] Audit scope and checklist completed. +- [ ] Findings and risks documented. +- [ ] Remediation actions assigned and tracked. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. + +## Additional Context + +This issue protects GitHub inheritance behaviour during the restructure. + +### Definition of Ready (DoR) + +- [ ] Audit scope, checklist, and goals defined. +- [ ] Areas/components listed. +- [ ] Dependencies and standards mapped. + +### Definition of Done (DoD) + +- [ ] Audit performed and findings documented. +- [ ] Remediation actions assigned. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-02-maintenance-clean-stale-path-references.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-02-maintenance-clean-stale-path-references.md new file mode 100644 index 000000000..7df9af94d --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-02-maintenance-clean-stale-path-references.md @@ -0,0 +1,50 @@ +--- +name: "Maintenance" +about: "Propose routine hygiene, dependency bumps, CI updates, or other maintenance tasks" +title: "[Maintenance] Clean stale path references before migration" +labels: [status:needs-triage, priority:normal, type:maintenance] +github_issue: "https://github.com/lightspeedwp/.github/issues/294" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Maintenance / Chore Summary + +Fix known stale references so the migration starts from a less confusing +baseline. + +Parent epic: #283 (). + +## Steps / Checklist + +- [ ] Resolve references to missing `.github/instructions/_index.instructions.md`. +- [ ] Resolve references to `.github/automation/labels.yml`. +- [ ] Resolve `docs/HUSKY-PRECOMMITS.md` vs `docs/HUSKY_PRECOMMITS.md`. +- [ ] Resolve stale `GEMINI.md`, `CLAUDE.md`, `chatmodes`, and `collections` references. +- [ ] Remove tracked zero-byte macOS `Icon` metadata files if not required. +- [ ] Documentation and changelog updated if needed. +- [ ] PR uses correct branch prefix `maintenance/` or `chore/`. + +## Acceptance Criteria + +- [ ] Known stale references from the PRD appendix are fixed or documented as intentionally deferred. +- [ ] Link audit shows no new broken active links from these changes. +- [ ] PR uses correct branch prefix `maintenance/` or `chore/`. +- [ ] Approved by at least one maintainer. + +## Additional Context + +Keep this issue focused on cleanup. Do not move portable AI assets here. + +## Definition of Ready (DoR) + +- [ ] Task/goal described and scoped. +- [ ] Steps/checklist listed. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +## Definition of Done (DoD) + +- [ ] Task completed and documented. +- [ ] Documentation/changelog updated if needed. +- [ ] PR uses correct branch prefix `maintenance/` or `chore/`. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-03-refactor-migrate-portable-instructions.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-03-refactor-migrate-portable-instructions.md new file mode 100644 index 000000000..435db21ec --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-03-refactor-migrate-portable-instructions.md @@ -0,0 +1,70 @@ +--- +name: "Code Refactor" +about: "Request or propose a code refactoring or review to improve code quality, maintainability, and consistency." +title: "[Refactor] Migrate reusable instructions to `/instructions`" +labels: [status:needs-review, priority:important, type:ai-ops, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/295" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Is your code refactoring request related to a problem? + +Reusable LightSpeed and WordPress instructions are currently mixed into +`.github/instructions`, making them harder to package as portable plugin +assets. + +Parent epic: #283 (). + +## Describe the Refactoring / Review Task + +Move or copy reusable instruction files into `/instructions` according to the +migration map. Leave repo-only maintenance guidance under `.github`. + +## Use Case + +Portable instructions should be available to plugin packs without requiring the +`.github` repo to be added as a VS Code workspace folder. + +## Alternatives Considered + +Keeping all instructions in `.github` preserves the workaround but blocks the +plugin distribution model. + +## Additional Context + +Do not rewrite the content deeply in this issue. Adjust only enough paths and +frontmatter to keep files valid. + +## Example Code Snippets + +```text +.github/instructions/.instructions.md -> /instructions/.instructions.md +``` + +## Refactoring / Review Checklist + +- [ ] Migration map rows exist for selected instruction files. +- [ ] Portable instructions are moved or copied to `/instructions`. +- [ ] Repo-only instructions remain under `.github`. +- [ ] Links and indexes are updated. +- [ ] Frontmatter remains valid. +- [ ] PR uses correct branch prefix `refactor/`. + +## Code Area(s) Impacted + +- [ ] Other: documentation and AI instruction assets. + +## Definition of Ready (DoR) + +- [ ] Refactoring goals and scope defined. +- [ ] Code area(s) and impact listed. +- [ ] Estimate added. +- [ ] Dependencies mapped. + +## Definition of Done (DoD) + +- [ ] Code meets org coding standards. +- [ ] Documentation updated if needed. +- [ ] Changelog entry prepared for PR. +- [ ] Tests added/updated. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-04-refactor-migrate-portable-agent-specs.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-04-refactor-migrate-portable-agent-specs.md new file mode 100644 index 000000000..011ff17cf --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-04-refactor-migrate-portable-agent-specs.md @@ -0,0 +1,69 @@ +--- +name: "Code Refactor" +about: "Request or propose a code refactoring or review to improve code quality, maintainability, and consistency." +title: "[Refactor] Migrate reusable agent specs to `/agents`" +labels: [status:needs-review, priority:important, type:ai-ops, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/296" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Is your code refactoring request related to a problem? + +Reusable agent specs currently live in `.github/agents`, alongside repo +maintenance specs and GitHub workflow references. + +Parent epic: #283 (). + +## Describe the Refactoring / Review Task + +Move reusable agent specs to `/agents`, leaving repo-maintenance agents under +`.github/agents` until they are rewritten or retired. + +## Use Case + +Installable plugin packs should be able to include agent specs from a portable +source folder. + +## Alternatives Considered + +Moving every agent at once is too risky because some specs are tightly coupled +to GitHub Actions and legacy JavaScript runners. + +## Additional Context + +Treat `scripts/agents` as legacy runtime for now. Do not move JavaScript +runners in this issue. + +## Example Code Snippets + +```text +.github/agents/.agent.md -> /agents/.agent.md +``` + +## Refactoring / Review Checklist + +- [ ] Agent specs are classified as portable, repo-only, archive, or defer. +- [ ] Portable specs move to `/agents`. +- [ ] Repo-only specs stay in `.github/agents`. +- [ ] Links to scripts and workflows are updated or marked legacy. +- [ ] Frontmatter remains valid. +- [ ] PR uses correct branch prefix `refactor/`. + +## Code Area(s) Impacted + +- [ ] Other: agent specifications. + +## Definition of Ready (DoR) + +- [ ] Refactoring goals and scope defined. +- [ ] Code area(s) and impact listed. +- [ ] Estimate added. +- [ ] Dependencies mapped. + +## Definition of Done (DoD) + +- [ ] Code meets org coding standards. +- [ ] Documentation updated if needed. +- [ ] Changelog entry prepared for PR. +- [ ] Tests added/updated. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-05-refactor-move-active-schemas-to-root-schemas.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-05-refactor-move-active-schemas-to-root-schemas.md new file mode 100644 index 000000000..fdc57163a --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-05-refactor-move-active-schemas-to-root-schemas.md @@ -0,0 +1,69 @@ +--- +name: "Code Refactor" +about: "Request or propose a code refactoring or review to improve code quality, maintainability, and consistency." +title: "[Refactor] Move active portable schemas to `/.schemas`" +labels: [status:needs-review, priority:important, area:core, area:ci] +github_issue: "https://github.com/lightspeedwp/.github/issues/297" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Is your code refactoring request related to a problem? + +Portable schemas currently live under `.github/schemas`, which blurs the line +between GitHub-native repo configuration and reusable plugin validation. + +Parent epic: #283 (). + +## Describe the Refactoring / Review Task + +Move only active, portable schemas into `/.schemas` and update schema +references in docs, VS Code settings, and validators. + +## Use Case + +Plugin, skill, agent, hook, workflow, and frontmatter schemas should be usable +outside GitHub's special `.github` folder. + +## Alternatives Considered + +Moving all schemas blindly could carry stale or unused schema debt into the new +structure. + +## Additional Context + +This issue moves schemas. Fixing invalid JSON syntax can be done in the +validation reset batch if needed. + +## Example Code Snippets + +```text +.github/schemas/frontmatter.schema.json -> .schemas/frontmatter.schema.json +``` + +## Refactoring / Review Checklist + +- [ ] Active schemas are identified. +- [ ] Portable schemas move to `/.schemas`. +- [ ] Repo-only schema references remain valid. +- [ ] VS Code schema mappings are updated. +- [ ] Validators reference the new path. +- [ ] PR uses correct branch prefix `refactor/`. + +## Code Area(s) Impacted + +- [ ] Other: schemas and validation references. + +## Definition of Ready (DoR) + +- [ ] Refactoring goals and scope defined. +- [ ] Code area(s) and impact listed. +- [ ] Estimate added. +- [ ] Dependencies mapped. + +## Definition of Done (DoD) + +- [ ] Code meets org coding standards. +- [ ] Documentation updated if needed. +- [ ] Changelog entry prepared for PR. +- [ ] Tests added/updated. +- [ ] PR uses correct branch prefix. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-06-feature-define-portable-workflows-source.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-06-feature-define-portable-workflows-source.md new file mode 100644 index 000000000..b81aa5fc7 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-02-portable-migration/02-06-feature-define-portable-workflows-source.md @@ -0,0 +1,67 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Define `/workflows` as portable agentic workflow source" +labels: [status:needs-triage, priority:normal, type:ai-ops, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/298" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Summary + +Create the first portable workflow source model under `/workflows`, distinct +from executable GitHub Actions in `.github/workflows`. + +Parent epic: #283 (). + +## Proposed Solution + +Add `/workflows/README.md` plus one or two placeholder workflow specs showing +how portable AI workflows should be documented and later packaged into plugins +or skills. + +## Acceptance Criteria + +- [ ] `/workflows` is documented as agentic workflow source, not GitHub Actions. +- [ ] `.github/workflows` remains the executable GitHub Actions folder. +- [ ] At least one example portable workflow spec exists. +- [ ] Links to related skills or agents are included. +- [ ] Documentation/changelog updated. +- [ ] Tests added/updated if validation covers workflow specs. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +Reference PRD decision AD-006. + +## Dependencies + +Depends on folder skeleton and ownership indexes. + +## Testing Approach + +Run link and structure validation once available. + +## Additional Context + +Keep this small. Do not migrate every GitHub Action workflow here. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-01-audit-classify-legacy-prompts.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-01-audit-classify-legacy-prompts.md new file mode 100644 index 000000000..7f8e06e50 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-01-audit-classify-legacy-prompts.md @@ -0,0 +1,59 @@ +--- +name: "Audit" +about: "Propose, conduct, or document a security, accessibility, code, or process audit." +title: "[Audit] Classify legacy prompts as skill, cookbook, archive, or delete" +labels: [status:needs-audit, priority:important, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/299" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Audit Summary + +Classify every `.github/prompts/*.prompt.md` file before converting prompts +into skills or cookbook recipes. + +Parent epic: #283 (). + +## Audit Checklist / Scope + +- [ ] Inventory all current prompt files. +- [ ] Identify files missing frontmatter. +- [ ] Classify each prompt as skill, cookbook, archive, delete, or defer. +- [ ] Identify P0 pilot skill candidates. +- [ ] Add classification to the migration decision map. + +## Findings / Risks + +Risk: migrating all prompts as-is would recreate the old prompt sprawl in the +new structure. + +## Remediation Actions + +- [ ] Create child issues only for selected P0 conversions. +- [ ] Archive or defer lower-priority prompts. + +## Acceptance Criteria + +- [ ] Audit scope and checklist completed. +- [ ] Findings and risks documented. +- [ ] Remediation actions assigned and tracked. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. + +## Additional Context + +The target structure intentionally does not include a top-level `/prompts` +folder. + +### Definition of Ready (DoR) + +- [ ] Audit scope, checklist, and goals defined. +- [ ] Areas/components listed. +- [ ] Dependencies and standards mapped. + +### Definition of Done (DoD) + +- [ ] Audit performed and findings documented. +- [ ] Remediation actions assigned. +- [ ] Documentation/changelog updated if applicable. +- [ ] PR uses correct branch prefix `audit/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-02-feature-create-skills-library-index.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-02-feature-create-skills-library-index.md new file mode 100644 index 000000000..ece5179c4 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-02-feature-create-skills-library-index.md @@ -0,0 +1,66 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Create the portable `/skills` library index" +labels: [status:needs-triage, priority:important, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/300" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Summary + +Create the canonical `/skills` library entrypoint and rules for self-contained +LightSpeed skill folders. + +Parent epic: #283 (). + +## Proposed Solution + +Add `/skills/README.md` with naming, metadata, `SKILL.md`, assets, scripts, +templates, examples, and plugin-packaging guidance. + +## Acceptance Criteria + +- [ ] `/skills/README.md` defines skill folder shape. +- [ ] Each skill must use kebab-case and include `SKILL.md`. +- [ ] Guidance covers assets, scripts, templates, examples, and tests. +- [ ] Guidance explains how canonical skills are copied or referenced by plugin packages. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +Reference PRD section 15, Favourite Skills Backlog. + +## Dependencies + +Depends on target folder skeleton. + +## Testing Approach + +Run structure validation once available. + +## Additional Context + +Keep tool-specific adapter details out of the canonical skill source where +possible. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-03-feature-create-frontmatter-audit-skill.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-03-feature-create-frontmatter-audit-skill.md new file mode 100644 index 000000000..85d2d0191 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-03-feature-create-frontmatter-audit-skill.md @@ -0,0 +1,67 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Create `lightspeed-frontmatter-audit` skill" +labels: [status:needs-triage, priority:important, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/301" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Summary + +Create the first P0 governance skill for auditing AI files for frontmatter, +schema drift, stale references, and missing indexes. + +Parent epic: #283 (). + +## Proposed Solution + +Add `/skills/lightspeed-frontmatter-audit/SKILL.md` with clear workflow steps, +inputs, expected outputs, and references to active schemas and validation +commands. + +## Acceptance Criteria + +- [ ] Skill folder exists with `SKILL.md`. +- [ ] Skill name matches folder name. +- [ ] Skill covers frontmatter, schema drift, stale links, and missing indexes. +- [ ] Skill output format is documented. +- [ ] Skill is eligible for inclusion in `plugins/lightspeed-github-ops`. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +Derived from PRD favourite skills backlog. + +## Dependencies + +Depends on `/skills` library index and migration map. + +## Testing Approach + +Run `validate:skills` once available; until then, manually verify folder shape. + +## Additional Context + +Keep the skill text tool-neutral. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-04-feature-create-pr-review-skill.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-04-feature-create-pr-review-skill.md new file mode 100644 index 000000000..229a3d6cf --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-04-feature-create-pr-review-skill.md @@ -0,0 +1,67 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Create `lightspeed-pr-review` skill" +labels: [status:needs-triage, priority:important, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/302" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Summary + +Create a P0 skill for preparing or reviewing pull requests against LightSpeed +standards, including security, accessibility, performance, tests, and +documentation. + +Parent epic: #283 (). + +## Proposed Solution + +Add `/skills/lightspeed-pr-review/SKILL.md` with review workflow, evidence +requirements, output format, and links to standards. + +## Acceptance Criteria + +- [ ] Skill folder exists with `SKILL.md`. +- [ ] Skill name matches folder name. +- [ ] Skill includes review priorities and evidence requirements. +- [ ] Skill covers security, accessibility, performance, tests, and docs. +- [ ] Skill is eligible for inclusion in `plugins/lightspeed-github-ops`. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +May draw from existing PR review prompts and reviewer agent specs. + +## Dependencies + +Depends on prompt classification and `/skills` library index. + +## Testing Approach + +Run `validate:skills` once available; manually verify folder shape first. + +## Additional Context + +Keep automated write actions out of the skill. This is a review/prep workflow. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-05-feature-create-label-governance-skill.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-05-feature-create-label-governance-skill.md new file mode 100644 index 000000000..74245348a --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-05-feature-create-label-governance-skill.md @@ -0,0 +1,67 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Create `lightspeed-label-governance` skill" +labels: [status:needs-triage, priority:important, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/303" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Summary + +Create a P0 skill for reviewing labels, issue templates, saved replies, and +triage conventions across LightSpeed repositories. + +Parent epic: #283 (). + +## Proposed Solution + +Add `/skills/lightspeed-label-governance/SKILL.md` with governance checks, +expected inputs, findings format, and remediation guidance. + +## Acceptance Criteria + +- [ ] Skill folder exists with `SKILL.md`. +- [ ] Skill name matches folder name. +- [ ] Skill covers labels, issue types, templates, saved replies, and triage conventions. +- [ ] Skill references canonical `.github` files without moving them. +- [ ] Skill is eligible for inclusion in `plugins/lightspeed-github-ops`. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +May draw from existing labeling agent docs and label governance reports. + +## Dependencies + +Depends on prompt classification and `/skills` library index. + +## Testing Approach + +Run `validate:skills` once available; manually verify folder shape first. + +## Additional Context + +The skill should be safe by default and should not mutate labels unless a +future automation explicitly adds that mode. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-06-document-cookbook-and-favourite-skills-backlog.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-06-document-cookbook-and-favourite-skills-backlog.md new file mode 100644 index 000000000..0f15a0bfd --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-03-skills-cookbook/03-06-document-cookbook-and-favourite-skills-backlog.md @@ -0,0 +1,49 @@ +--- +name: "Documentation" +about: "Request new documentation or propose updates/clarifications to existing docs." +title: "[Documentation] Create cookbook and favourite skills backlog" +labels: [status:needs-triage, priority:normal, area:documentation, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/304" +github_parent: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## What documentation is needed? + +Create the initial `/cookbook` structure and a favourite skills backlog for +future skill collection, adaptation, and plugin-pack planning. + +Parent epic: #283 (). + +## Why is this documentation important? + +The team wants to collect favourite skills without forcing every idea into the +pilot plugin immediately. + +## Acceptance Criteria + +- [ ] `/cookbook/README.md` explains recipes, examples, and adoption notes. +- [ ] Favourite skills backlog exists in `/skills/README.md` or `/docs`. +- [ ] Backlog records source, licence, trust notes, priority, and target plugin candidate. +- [ ] Block theme and block plugin skill ideas are segmented. +- [ ] Documentation is accessible and easy to find. +- [ ] PR uses correct branch prefix `docs/`. + +## Additional Context + +This is a planning surface, not a production plugin pack. + +## Definition of Ready (DoR) + +- [ ] Documentation need is clear and well-defined. +- [ ] Related docs/issues or files linked. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if relevant. +- [ ] Milestone/release assigned if applicable. + +## Definition of Done (DoD) + +- [ ] Documentation meets org standards and guidelines. +- [ ] Changelog entry prepared for PR. +- [ ] Documentation reviewed for clarity and accessibility. +- [ ] Screenshots/code examples included if relevant. +- [ ] PR uses correct branch prefix `docs/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-01-feature-create-lightspeed-github-ops-plugin-skeleton.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-01-feature-create-lightspeed-github-ops-plugin-skeleton.md new file mode 100644 index 000000000..0698b386d --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-01-feature-create-lightspeed-github-ops-plugin-skeleton.md @@ -0,0 +1,67 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Create `plugins/lightspeed-github-ops` pilot plugin skeleton" +labels: [status:needs-triage, priority:important, type:ai-ops, area:core] +github_issue: "https://github.com/lightspeedwp/.github/issues/305" +github_parent: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## Summary + +Create the first installable pilot plugin package for LightSpeed GitHub +governance and AI operations. + +Parent epic: #284 (). + +## Proposed Solution + +Add `plugins/lightspeed-github-ops` with README, package folders, and +placeholder manifests. Keep content minimal until selected skills and agents +are ready. + +## Acceptance Criteria + +- [ ] `plugins/lightspeed-github-ops/README.md` exists. +- [ ] Plugin folders for `agents`, `skills`, and optional `hooks` exist. +- [ ] Placeholder manifest paths are documented. +- [ ] Package scope excludes block theme and block plugin guidance. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +Reference PRD section 9.2, First Plugin Scope. + +## Dependencies + +Depends on folder skeleton and selected pilot skills. + +## Testing Approach + +Run structure validation once available. + +## Additional Context + +This issue creates the package shell only. Tool-specific manifests are separate +child issues. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-02-compatibility-add-copilot-plugin-manifest.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-02-compatibility-add-copilot-plugin-manifest.md new file mode 100644 index 000000000..5249b0067 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-02-compatibility-add-copilot-plugin-manifest.md @@ -0,0 +1,63 @@ +--- +name: "Compatibility" +about: "Track browser/device/WordPress/plugin compatibility issues." +title: "[Compatibility] Add VS Code and GitHub Copilot plugin manifest metadata" +labels: [status:needs-testing, type:compatibility, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/306" +github_parent: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## Compatibility Summary + +Add the manifest metadata needed for VS Code and GitHub Copilot plugin +discovery for `plugins/lightspeed-github-ops`. + +Parent epic: #284 (). + +## Steps to Reproduce + +- [ ] Open the repo in VS Code. +- [ ] Point plugin discovery at the local pilot plugin path. +- [ ] Confirm the pilot plugin metadata and referenced assets are discoverable. + +## Expected Behavior + +The plugin manifest references existing local agent and skill paths and can be +used by the supported Copilot plugin flow without missing-file errors. + +## Environment + +- VS Code with GitHub Copilot. +- Local checkout of `lightspeedwp/.github` on the restructure branch. + +## Screenshots / Logs + +Add install or discovery logs when testing. + +## Acceptance Criteria + +- [ ] Copilot-facing manifest exists in the agreed plugin location. +- [ ] Manifest validates against the local plugin schema once available. +- [ ] Referenced agents and skills exist. +- [ ] Compatible behaviour confirmed in local VS Code testing. +- [ ] Documentation/changelog updated if needed. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. + +## Additional Context + +Keep this manifest conservative. Do not invent unsupported fields. + +## Definition of Ready (DoR) + +- [ ] Compatibility issue/context described. +- [ ] Steps to reproduce and environment details provided. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +## Definition of Done (DoD) + +- [ ] Issue resolved and verified on affected platforms. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-03-compatibility-add-codex-plugin-manifest.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-03-compatibility-add-codex-plugin-manifest.md new file mode 100644 index 000000000..86981e645 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-03-compatibility-add-codex-plugin-manifest.md @@ -0,0 +1,63 @@ +--- +name: "Compatibility" +about: "Track browser/device/WordPress/plugin compatibility issues." +title: "[Compatibility] Add Codex/OpenAI plugin manifest for pilot package" +labels: [status:needs-testing, type:compatibility, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/307" +github_parent: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## Compatibility Summary + +Add `.codex-plugin/plugin.json` for `plugins/lightspeed-github-ops` using the +local Codex plugin manifest expectations. + +Parent epic: #284 (). + +## Steps to Reproduce + +- [ ] Install or point Codex at the local pilot plugin. +- [ ] Confirm `.codex-plugin/plugin.json` is discovered. +- [ ] Confirm referenced skills and assets exist. + +## Expected Behavior + +Codex can read the pilot plugin metadata without missing paths or invalid +manifest fields. + +## Environment + +- Local Codex app or Codex-compatible plugin test path. +- Local checkout of this repository. + +## Screenshots / Logs + +Add validation output or plugin discovery logs when testing. + +## Acceptance Criteria + +- [ ] `.codex-plugin/plugin.json` exists in the pilot plugin. +- [ ] Manifest `name` matches the plugin folder name. +- [ ] Manifest points to existing skill and asset paths. +- [ ] Manifest validates against the local Codex plugin schema once available. +- [ ] Documentation/changelog updated if needed. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. + +## Additional Context + +Use the local `plugin-creator` manifest conventions as the reference. + +## Definition of Ready (DoR) + +- [ ] Compatibility issue/context described. +- [ ] Steps to reproduce and environment details provided. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +## Definition of Done (DoD) + +- [ ] Issue resolved and verified on affected platforms. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-04-compatibility-add-claude-plugin-manifest.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-04-compatibility-add-claude-plugin-manifest.md new file mode 100644 index 000000000..f3f748382 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-04-compatibility-add-claude-plugin-manifest.md @@ -0,0 +1,62 @@ +--- +name: "Compatibility" +about: "Track browser/device/WordPress/plugin compatibility issues." +title: "[Compatibility] Add Claude Code plugin manifest for pilot package" +labels: [status:needs-testing, type:compatibility, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/308" +github_parent: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## Compatibility Summary + +Add `.claude-plugin/plugin.json` for `plugins/lightspeed-github-ops` and keep +Claude-specific details isolated from canonical skill source where possible. + +Parent epic: #284 (). + +## Steps to Reproduce + +- [ ] Point Claude Code at the local pilot plugin. +- [ ] Confirm `.claude-plugin/plugin.json` is discoverable. +- [ ] Confirm referenced skills, agents, hooks, and MCP entries exist or are omitted. + +## Expected Behavior + +Claude Code can load the plugin manifest without broken references. + +## Environment + +- Claude Code local plugin install path. +- Local checkout of this repository. + +## Screenshots / Logs + +Add validation or plugin discovery output when testing. + +## Acceptance Criteria + +- [ ] `.claude-plugin/plugin.json` exists in the pilot plugin. +- [ ] Manifest references only files inside the plugin package. +- [ ] Claude-specific namespace or install notes are documented. +- [ ] Compatible behaviour confirmed in local testing. +- [ ] Documentation/changelog updated if needed. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. + +## Additional Context + +Do not rely on symlinks outside the plugin root. + +## Definition of Ready (DoR) + +- [ ] Compatibility issue/context described. +- [ ] Steps to reproduce and environment details provided. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +## Definition of Done (DoD) + +- [ ] Issue resolved and verified on affected platforms. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-05-feature-package-pilot-agent-and-skills.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-05-feature-package-pilot-agent-and-skills.md new file mode 100644 index 000000000..d734c8199 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-05-feature-package-pilot-agent-and-skills.md @@ -0,0 +1,68 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Package selected agent and pilot skills into `lightspeed-github-ops`" +labels: [status:needs-triage, priority:important, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/309" +github_parent: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## Summary + +Package the selected governance agent and P0 pilot skills into +`plugins/lightspeed-github-ops` after their canonical source files are ready. + +Parent epic: #284 (). + +## Proposed Solution + +Copy or materialise only the approved pilot assets into the plugin package: +frontmatter audit, PR review, label governance, and one governance agent. + +## Acceptance Criteria + +- [ ] Pilot plugin includes selected governance agent. +- [ ] Pilot plugin includes `lightspeed-frontmatter-audit`. +- [ ] Pilot plugin includes `lightspeed-pr-review`. +- [ ] Pilot plugin includes `lightspeed-label-governance`. +- [ ] Plugin manifests reference packaged paths only. +- [ ] Documentation/changelog updated. +- [ ] Tests added/updated if validators cover packaged content. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +Reference PRD section 9.2 and section 15. + +## Dependencies + +Depends on the three pilot skill issues and plugin skeleton. + +## Testing Approach + +Run `validate:plugins` and `validate:skills` once available. + +## Additional Context + +Manual packaging is acceptable for the pilot. Do not build a materialisation +pipeline yet. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-06-document-plugin-installation-guide.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-06-document-plugin-installation-guide.md new file mode 100644 index 000000000..72e667c41 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-04-pilot-plugin/04-06-document-plugin-installation-guide.md @@ -0,0 +1,51 @@ +--- +name: "Documentation" +about: "Request new documentation or propose updates/clarifications to existing docs." +title: "[Documentation] Write pilot plugin installation and update guide" +labels: [status:needs-triage, priority:important, area:documentation, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/310" +github_parent: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## What documentation is needed? + +Create documentation for installing, updating, testing, and troubleshooting the +`lightspeed-github-ops` pilot plugin locally. + +Parent epic: #284 (). + +## Why is this documentation important? + +The goal is to replace the current VS Code workspace workaround with an +installable plugin workflow. + +## Acceptance Criteria + +- [ ] Installation guide covers VS Code/GitHub Copilot. +- [ ] Installation guide covers Codex/OpenAI compatibility notes. +- [ ] Installation guide covers Claude Code compatibility notes. +- [ ] Update and uninstall notes are included where known. +- [ ] Troubleshooting covers missing manifest and missing referenced-file errors. +- [ ] Documentation is accessible and easy to find. +- [ ] PR uses correct branch prefix `docs/`. + +## Additional Context + +Document only tested flows as supported. Clearly mark untested flows as notes +or future compatibility work. + +## Definition of Ready (DoR) + +- [ ] Documentation need is clear and well-defined. +- [ ] Related docs/issues or files linked. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if relevant. +- [ ] Milestone/release assigned if applicable. + +## Definition of Done (DoD) + +- [ ] Documentation meets org standards and guidelines. +- [ ] Changelog entry prepared for PR. +- [ ] Documentation reviewed for clarity and accessibility. +- [ ] Screenshots/code examples included if relevant. +- [ ] PR uses correct branch prefix `docs/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-01-maintenance-fix-invalid-json-schema-syntax.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-01-maintenance-fix-invalid-json-schema-syntax.md new file mode 100644 index 000000000..56fa7d53a --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-01-maintenance-fix-invalid-json-schema-syntax.md @@ -0,0 +1,49 @@ +--- +name: "Maintenance" +about: "Propose routine hygiene, dependency bumps, CI updates, or other maintenance tasks" +title: "[Maintenance] Fix invalid JSON schema syntax before validator reset" +labels: [status:needs-triage, priority:important, type:maintenance, area:ci] +github_issue: "https://github.com/lightspeedwp/.github/issues/311" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Maintenance / Chore Summary + +Fix invalid JSON syntax in active schema files, especially JavaScript-style +comments in `project-fields.schema.json`. + +Parent epic: #285 (). + +## Steps / Checklist + +- [ ] Identify schema files that fail strict JSON parsing. +- [ ] Remove comments or convert them to valid schema descriptions. +- [ ] Confirm schema files remain valid JSON. +- [ ] Documentation and changelog updated if needed. +- [ ] PR uses correct branch prefix `maintenance/` or `chore/`. + +## Acceptance Criteria + +- [ ] Active schema files parse as valid JSON. +- [ ] `validate:json:schemas` or replacement read-only check no longer fails on syntax. +- [ ] No schema meaning is lost without documentation. +- [ ] Approved by at least one maintainer. + +## Additional Context + +This issue fixes content syntax only. It does not redesign the validation +system. + +## Definition of Ready (DoR) + +- [ ] Task/goal described and scoped. +- [ ] Steps/checklist listed. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +## Definition of Done (DoD) + +- [ ] Task completed and documented. +- [ ] Documentation/changelog updated if needed. +- [ ] PR uses correct branch prefix `maintenance/` or `chore/`. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-02-buildci-split-validation-from-formatting.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-02-buildci-split-validation-from-formatting.md new file mode 100644 index 000000000..a4820aae0 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-02-buildci-split-validation-from-formatting.md @@ -0,0 +1,51 @@ +--- +name: "Build & CI" +about: "Propose changes, fixes, or improvements to build tools, CI/CD pipelines, or automation." +title: "[Build/CI] Split validation commands from mutating format and fix commands" +labels: [status:needs-triage, priority:important, area:ci] +github_issue: "https://github.com/lightspeedwp/.github/issues/312" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Build/CI Summary + +Ensure every `validate:*` command is read-only and move mutating behaviour to +explicit `format:*` or `fix:*` commands. + +Parent epic: #285 (). + +## Steps / Checklist + +- [ ] Audit existing validation commands for file writes. +- [ ] Add or update read-only validation scripts. +- [ ] Add explicit write-capable formatter/fixer scripts. +- [ ] Update package scripts and documentation. +- [ ] PR uses correct branch prefix `ci/` or `build/`. +- [ ] Approved by at least one maintainer. + +## Acceptance Criteria + +- [ ] `validate:*` commands do not modify files. +- [ ] Write-capable commands are named `format:*` or `fix:*`. +- [ ] CI uses read-only validation commands. +- [ ] Documentation explains the distinction. + +## Additional Context + +The PRD calls out `validate:json:schemas` as currently mutating and failing. + +## References + +- Active PRD section 16.2, Required New Commands. + +## Definition of Ready (DoR) + +- [ ] Build/CI goal and scope defined. +- [ ] Checklist prepared. +- [ ] Estimate added. + +## Definition of Done (DoD) + +- [ ] All checklist and acceptance criteria completed. +- [ ] Documentation/changelog updated. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-03-buildci-add-validate-structure.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-03-buildci-add-validate-structure.md new file mode 100644 index 000000000..1477aa3d0 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-03-buildci-add-validate-structure.md @@ -0,0 +1,51 @@ +--- +name: "Build & CI" +about: "Propose changes, fixes, or improvements to build tools, CI/CD pipelines, or automation." +title: "[Build/CI] Add read-only `validate:structure` command" +labels: [status:needs-triage, priority:important, area:ci] +github_issue: "https://github.com/lightspeedwp/.github/issues/313" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Build/CI Summary + +Add a small read-only structure validator for required top-level folders, +README/index files, and pilot plugin package basics. + +Parent epic: #285 (). + +## Steps / Checklist + +- [ ] Define required root folders from the PRD. +- [ ] Validate required folder README/index files. +- [ ] Validate `plugins/lightspeed-github-ops` required package folders once created. +- [ ] Add `npm run validate:structure`. +- [ ] Add tests or fixture checks if practical. +- [ ] PR uses correct branch prefix `ci/` or `build/`. + +## Acceptance Criteria + +- [ ] Command exits non-zero when required folders are missing. +- [ ] Command does not modify files. +- [ ] Documentation explains what is checked. +- [ ] CI can run the command safely. + +## Additional Context + +Keep dependency usage minimal. + +## References + +- Active PRD FR-302. + +## Definition of Ready (DoR) + +- [ ] Build/CI goal and scope defined. +- [ ] Checklist prepared. +- [ ] Estimate added. + +## Definition of Done (DoD) + +- [ ] All checklist and acceptance criteria completed. +- [ ] Documentation/changelog updated. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-04-buildci-add-validate-plugins-and-skills.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-04-buildci-add-validate-plugins-and-skills.md new file mode 100644 index 000000000..d3a064dc9 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-04-buildci-add-validate-plugins-and-skills.md @@ -0,0 +1,52 @@ +--- +name: "Build & CI" +about: "Propose changes, fixes, or improvements to build tools, CI/CD pipelines, or automation." +title: "[Build/CI] Add read-only plugin and skill validators" +labels: [status:needs-triage, priority:important, area:ci, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/314" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Build/CI Summary + +Add read-only validators for plugin manifests and skill folder shape. + +Parent epic: #285 (). + +## Steps / Checklist + +- [ ] Define manifest validation rules. +- [ ] Define skill folder validation rules. +- [ ] Validate `SKILL.md` presence and naming. +- [ ] Validate manifest references resolve to files inside the plugin package. +- [ ] Add `npm run validate:plugins`. +- [ ] Add `npm run validate:skills`. +- [ ] PR uses correct branch prefix `ci/` or `build/`. + +## Acceptance Criteria + +- [ ] Invalid plugin manifest fails validation. +- [ ] Missing skill `SKILL.md` fails validation. +- [ ] Missing referenced plugin file fails validation. +- [ ] Commands do not modify files. +- [ ] Documentation/changelog updated. + +## Additional Context + +This is the safety net for the pilot plugin. + +## References + +- Active PRD FR-303 and FR-304. + +## Definition of Ready (DoR) + +- [ ] Build/CI goal and scope defined. +- [ ] Checklist prepared. +- [ ] Estimate added. + +## Definition of Done (DoD) + +- [ ] All checklist and acceptance criteria completed. +- [ ] Documentation/changelog updated. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-05-buildci-add-validate-frontmatter-and-links.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-05-buildci-add-validate-frontmatter-and-links.md new file mode 100644 index 000000000..16dfca61f --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-05-buildci-add-validate-frontmatter-and-links.md @@ -0,0 +1,52 @@ +--- +name: "Build & CI" +about: "Propose changes, fixes, or improvements to build tools, CI/CD pipelines, or automation." +title: "[Build/CI] Add read-only frontmatter and local link validators" +labels: [status:needs-triage, priority:important, area:ci, area:documentation] +github_issue: "https://github.com/lightspeedwp/.github/issues/315" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Build/CI Summary + +Add read-only validation for frontmatter and local links across active source +folders after migration. + +Parent epic: #285 (). + +## Steps / Checklist + +- [ ] Define active source folders to validate. +- [ ] Validate frontmatter against simplified active schemas. +- [ ] Validate local Markdown links. +- [ ] Warn, not fail, on archived legacy folders during migration. +- [ ] Add `npm run validate:frontmatter`. +- [ ] Add `npm run validate:links`. +- [ ] PR uses correct branch prefix `ci/` or `build/`. + +## Acceptance Criteria + +- [ ] Active source frontmatter validation is read-only. +- [ ] Broken active local links fail validation. +- [ ] Archived legacy paths are handled intentionally. +- [ ] Documentation/changelog updated. + +## Additional Context + +This issue supports safe deletion of old paths later. + +## References + +- Active PRD FR-305 and FR-306. + +## Definition of Ready (DoR) + +- [ ] Build/CI goal and scope defined. +- [ ] Checklist prepared. +- [ ] Estimate added. + +## Definition of Done (DoD) + +- [ ] All checklist and acceptance criteria completed. +- [ ] Documentation/changelog updated. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-06-test-fix-coverage-reporting-and-import-side-effects.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-06-test-fix-coverage-reporting-and-import-side-effects.md new file mode 100644 index 000000000..74fd67a17 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-05-validation-reset/05-06-test-fix-coverage-reporting-and-import-side-effects.md @@ -0,0 +1,57 @@ +--- +name: "Test Coverage" +about: "Propose, add, or expand tests (unit, integration, E2E)." +title: "[Test Coverage] Fix misleading coverage reporting and noisy import side effects" +labels: [status:needs-triage, priority:normal, type:test] +github_issue: "https://github.com/lightspeedwp/.github/issues/316" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Summary + +Clean up the test signal for the simplified validation layer by fixing or +documenting zero coverage reporting and noisy import-time side effects. + +Parent epic: #285 (). + +## Action + +- **Action Type:** Refactor +- **Target File:** `.jest.config.cjs`, validator tests, or replacement validation test files. + +## Proposed Test Content + +Add focused tests for the new validators where practical. If coverage remains +out of scope during the reset, document that decision explicitly. + +## Scope & Applicability + +- Type: unit tests for validation scripts. +- Affected areas: plugin, skill, structure, frontmatter, and link validators. +- Audience: maintainers and CI. + +## Acceptance Criteria + +- [ ] Test covers all required scenarios and edge cases for new validators. +- [ ] Test is properly structured and follows conventions. +- [ ] Change is documented in the project change log. +- [ ] Test has been run and passes as expected. +- [ ] Coverage output is meaningful or intentionally disabled with rationale. +- [ ] PR uses correct branch prefix `test/`. +- [ ] Approved by at least one maintainer. + +### Definition of Ready (DoR) + +- [ ] Purpose, scope, and audience defined. +- [ ] Target file and action type specified. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +### Definition of Done (DoD) + +- [ ] All acceptance criteria met and verified. +- [ ] Changelog entry prepared for PR. +- [ ] Test passes all required scenarios and environments. +- [ ] Documentation updated if needed. +- [ ] PR uses correct branch prefix `test/`. +- [ ] Approved by at least one maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-01-compatibility-run-local-tool-smoke-tests.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-01-compatibility-run-local-tool-smoke-tests.md new file mode 100644 index 000000000..a9cd3b96c --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-01-compatibility-run-local-tool-smoke-tests.md @@ -0,0 +1,65 @@ +--- +name: "Compatibility" +about: "Track browser/device/WordPress/plugin compatibility issues." +title: "[Compatibility] Run local tool smoke tests for the pilot plugin" +labels: [status:needs-testing, type:compatibility, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/317" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Compatibility Summary + +Run local smoke tests for `plugins/lightspeed-github-ops` across the supported +AI tool surfaces. + +Parent epic: #285 (). + +## Steps to Reproduce + +- [ ] Test VS Code/GitHub Copilot plugin discovery. +- [ ] Test Codex/OpenAI manifest discovery. +- [ ] Test Claude Code manifest discovery. +- [ ] Record unsupported or untested flows clearly. + +## Expected Behavior + +The pilot plugin loads or validates without missing-file errors in each tested +tool. + +## Environment + +- Local checkout of `lightspeedwp/.github`. +- Current VS Code/GitHub Copilot environment. +- Current Codex app environment. +- Current Claude Code environment, if available. + +## Screenshots / Logs + +Attach local command output, screenshots, or notes to the GitHub issue. + +## Acceptance Criteria + +- [ ] Issue is reproducible and documented. +- [ ] Compatible behaviour confirmed on affected platforms. +- [ ] No adverse impact on other platforms. +- [ ] Documentation/changelog updated if needed. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. + +## Additional Context + +This issue verifies compatibility; it should not redesign manifests. + +## Definition of Ready (DoR) + +- [ ] Compatibility issue/context described. +- [ ] Steps to reproduce and environment details provided. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if applicable. + +## Definition of Done (DoD) + +- [ ] Issue resolved and verified on affected platforms. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `compat/`. +- [ ] Approved by at least one maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-02-feature-pilot-plugin-in-one-lightspeed-repo.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-02-feature-pilot-plugin-in-one-lightspeed-repo.md new file mode 100644 index 000000000..0d7ddb0a1 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-02-feature-pilot-plugin-in-one-lightspeed-repo.md @@ -0,0 +1,66 @@ +--- +name: "Feature" +about: "Propose a net-new capability, enhancement, or workflow improvement." +title: "[Feature] Pilot `lightspeed-github-ops` in one LightSpeed repository" +labels: [status:needs-triage, priority:important, type:ai-ops, type:compatibility] +github_issue: "https://github.com/lightspeedwp/.github/issues/318" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Summary + +Test the pilot plugin in one real LightSpeed repository before broader rollout. + +Parent epic: #285 (). + +## Proposed Solution + +Install the plugin locally in one chosen LightSpeed repo, run a small workflow +using the packaged skills, and record findings. + +## Acceptance Criteria + +- [ ] Pilot repository is selected. +- [ ] Plugin is installed or loaded using the documented flow. +- [ ] At least one packaged skill is used against the pilot repo. +- [ ] Gaps and improvements are recorded. +- [ ] Rollback or uninstall path is documented. +- [ ] Documentation/changelog updated. +- [ ] PR uses correct branch prefix `feat/`. + +## Designs / References + +Reference installation guide and compatibility smoke test results. + +## Dependencies + +Depends on the pilot plugin package and install docs. + +## Testing Approach + +Use real maintainer workflow notes rather than only synthetic validation. + +## Additional Context + +Keep the first pilot small. The goal is to prove the install model, not migrate +every repo. + +## Definition of Ready (DoR) + +- [ ] Problem statement and outcome defined. +- [ ] Acceptance criteria written. +- [ ] Designs/specs/references attached if relevant. +- [ ] Dependencies mapped. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. +- [ ] Milestone/iteration assigned if applicable. + +## Definition of Done (DoD) + +- [ ] All acceptance criteria met. +- [ ] Tests added/updated; CI green. +- [ ] Accessibility, performance, security checks where relevant. +- [ ] Docs/changelog updated. +- [ ] Feature toggles/rollout considered. +- [ ] QA verified/UAT approved if applicable. +- [ ] Release notes prepared; monitoring/alerts set. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-03-document-pilot-findings.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-03-document-pilot-findings.md new file mode 100644 index 000000000..72ac2847e --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-03-document-pilot-findings.md @@ -0,0 +1,50 @@ +--- +name: "Documentation" +about: "Request new documentation or propose updates/clarifications to existing docs." +title: "[Documentation] Document pilot findings and follow-up decisions" +labels: [status:needs-triage, priority:normal, area:documentation, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/319" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## What documentation is needed? + +Create a concise pilot findings report after local tool tests and the first +LightSpeed repository pilot. + +Parent epic: #285 (). + +## Why is this documentation important? + +The pilot results should determine whether to build materialisation tooling, +expand plugin packs, or adjust compatibility strategy. + +## Acceptance Criteria + +- [ ] Findings report lists tested tools and versions where known. +- [ ] Findings report lists install successes and failures. +- [ ] Findings report lists missing docs or validation gaps. +- [ ] Findings report recommends next actions. +- [ ] Documentation is accessible and easy to find. +- [ ] PR uses correct branch prefix `docs/`. + +## Additional Context + +Store this under the active project folder first, then promote durable outcomes +to `/docs`. + +## Definition of Ready (DoR) + +- [ ] Documentation need is clear and well-defined. +- [ ] Related docs/issues or files linked. +- [ ] Acceptance criteria listed. +- [ ] Estimate added if relevant. +- [ ] Milestone/release assigned if applicable. + +## Definition of Done (DoD) + +- [ ] Documentation meets org standards and guidelines. +- [ ] Changelog entry prepared for PR. +- [ ] Documentation reviewed for clarity and accessibility. +- [ ] Screenshots/code examples included if relevant. +- [ ] PR uses correct branch prefix `docs/`. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-04-research-create-future-plugin-pack-backlogs.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-04-research-create-future-plugin-pack-backlogs.md new file mode 100644 index 000000000..3492a953c --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-04-research-create-future-plugin-pack-backlogs.md @@ -0,0 +1,52 @@ +--- +name: "Research" +about: "Propose or document technical research, investigation, or exploratory work." +title: "[Research] Create future plugin pack backlogs" +labels: [status:needs-review, priority:normal, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/320" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Research Goal + +Define backlog candidates for future plugin packs after the pilot is stable: +block theme, block plugin, AI ops core, release ops, and talk/blog kit. + +Parent epic: #285 (). + +## Background / Motivation + +The first plugin should stay small, but the architecture needs clear future +pack boundaries so favourite skills can be collected without scope creep. + +## Approach / Methods + +- [ ] Review the PRD favourite skills backlog. +- [ ] Group candidate skills by plugin pack. +- [ ] Record priority, source, licence/trust notes, and dependencies. +- [ ] Identify what should not enter the governance pilot plugin. + +## Findings / Summary + +To be completed after research. + +## Next Steps + +Create follow-up issues only for packs approved after the pilot. + +## Additional Context + +This is planning work, not implementation. + +### Definition of Ready (DoR) + +- [ ] Research goal/objective defined. +- [ ] Background/context described. +- [ ] Approach/methods listed. +- [ ] Estimate added if relevant. + +### Definition of Done (DoD) + +- [ ] Research performed and findings documented. +- [ ] Recommendations/next steps proposed. +- [ ] Documentation updated if applicable. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-05-release-readiness-checklist.md b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-05-release-readiness-checklist.md new file mode 100644 index 000000000..25caacb3f --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/children/batch-06-pilot-release/06-05-release-readiness-checklist.md @@ -0,0 +1,49 @@ +--- +name: "Release" +about: "Propose or track release management, versioning, or deployment tasks." +title: "[Release] Prepare pilot plugin restructure release readiness checklist" +labels: [status:needs-triage, type:release] +github_issue: "https://github.com/lightspeedwp/.github/issues/321" +github_parent: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Release Summary + +Prepare the release readiness checklist for the first portable AI plugin +restructure milestone. + +Parent epic: #285 (). + +## Milestones / Checklist + +- [ ] Release goal described. +- [ ] Versions/tags mapped. +- [ ] Parent epics and child issues linked. +- [ ] Validation results recorded. +- [ ] Plugin install tests recorded. +- [ ] Docs/changelog prepared. +- [ ] Release notes drafted. +- [ ] QA/staging verified. + +## Acceptance Criteria + +- [ ] Release completed and verified. +- [ ] Documentation/changelog updated. +- [ ] Release notes published or prepared for maintainer approval. + +## Additional Context + +This release should cover the pilot restructure milestone, not the full future +plugin family. + +## Definition of Ready (DoR) + +- [ ] Release goal and scope defined. +- [ ] Milestones and checklist mapped. +- [ ] Estimate added. + +## Definition of Done (DoD) + +- [ ] All checklist and acceptance criteria completed. +- [ ] Documentation/changelog updated. +- [ ] Approved by maintainer. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/parents/01-epic-planning-control-and-skeleton.md b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/01-epic-planning-control-and-skeleton.md new file mode 100644 index 000000000..523117deb --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/01-epic-planning-control-and-skeleton.md @@ -0,0 +1,67 @@ +--- +name: "Epic" +about: "Propose/manage a large, multi-part initiative or project grouping stories/features/tasks" +title: "[Epic] Portable AI plugin restructure: planning control and target skeleton" +labels: [status:needs-planning, priority:important, area:core, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/282" +--- + +## Epic Summary + +Plan and prepare the portable AI plugin restructure before moving production +assets. This parent covers the freeze, current-state inventory, migration +decision map, target folder skeleton, and the new `.github` boundary. + +## Linked Stories/Tasks + +- Batch 00: planning control and baseline. +- Batch 01: target skeleton and `.github` boundary. +- Child issue links: + - [#286](https://github.com/lightspeedwp/.github/issues/286) [Audit] Inventory AI assets and create the migration decision map + - [#287](https://github.com/lightspeedwp/.github/issues/287) [Audit] Capture baseline validation, test, and dependency state + - [#288](https://github.com/lightspeedwp/.github/issues/288) [Task] Create milestone, label, and parent-child issue linking plan + - [#289](https://github.com/lightspeedwp/.github/issues/289) [Task] Create target top-level folder skeleton + - [#290](https://github.com/lightspeedwp/.github/issues/290) [Documentation] Add ownership indexes for new top-level folders + - [#291](https://github.com/lightspeedwp/.github/issues/291) [Refactor] Update file organisation rules for GitHub-native vs portable assets + - [#292](https://github.com/lightspeedwp/.github/issues/292) [Refactor] Scope .github Copilot instructions to this repo only + +## Milestones & Timeline + +- Milestone: Portable AI Plugin Restructure - Foundation. +- Sequence: must complete before portable asset migration begins. + +## Acceptance Criteria + +- [ ] Current asset inventory and migration decision map completed. +- [ ] Baseline validation and dependency findings documented. +- [ ] Target top-level folders created with ownership indexes. +- [ ] `.github` boundary rules updated for repo-local governance vs portable AI assets. +- [ ] Documentation and changelog updated. +- [ ] Tests/QA complete. +- [ ] Milestone closed. + +## Dependencies / Blockers + +- Active PRD: `.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-prd-2026-05-14.md`. +- Requires agreement that `.github` remains GitHub-native and repo-local. + +## Additional Context + +Use this epic to prevent big-bang moves. No file migration should happen until +the migration map defines the source, target, and decision for each asset. + +## Definition of Ready (DoR) + +- [ ] Epic goal and scope defined. +- [ ] Linked stories/tasks listed. +- [ ] Milestones and timeline mapped. +- [ ] Dependencies/blockers identified. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. + +## Definition of Done (DoD) + +- [ ] All linked stories/tasks completed and closed. +- [ ] Documentation/changelog updated. +- [ ] QA and testing complete. +- [ ] Milestone closed and release notes prepared. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/parents/02-epic-portable-source-migration.md b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/02-epic-portable-source-migration.md new file mode 100644 index 000000000..9c0940c7b --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/02-epic-portable-source-migration.md @@ -0,0 +1,73 @@ +--- +name: "Epic" +about: "Propose/manage a large, multi-part initiative or project grouping stories/features/tasks" +title: "[Epic] Portable AI plugin restructure: source asset migration" +labels: [status:needs-planning, priority:important, area:core, type:ai-ops] +github_issue: "https://github.com/lightspeedwp/.github/issues/283" +--- + +## Epic Summary + +Move reusable AI operations assets out of `.github` into portable source +folders. This covers instructions, agent specs, active schemas, portable +workflow specs, prompt classification, first skills, and cookbook material. + +## Linked Stories/Tasks + +- Batch 02: portable migration. +- Batch 03: skills and cookbook. +- Child issue links: + - [#293](https://github.com/lightspeedwp/.github/issues/293) [Audit] Classify GitHub-native files that must remain in .github + - [#294](https://github.com/lightspeedwp/.github/issues/294) [Maintenance] Clean stale path references before migration + - [#295](https://github.com/lightspeedwp/.github/issues/295) [Refactor] Migrate reusable instructions to /instructions + - [#296](https://github.com/lightspeedwp/.github/issues/296) [Refactor] Migrate reusable agent specs to /agents + - [#297](https://github.com/lightspeedwp/.github/issues/297) [Refactor] Move active portable schemas to /.schemas + - [#298](https://github.com/lightspeedwp/.github/issues/298) [Feature] Define /workflows as portable agentic workflow source + - [#299](https://github.com/lightspeedwp/.github/issues/299) [Audit] Classify legacy prompts as skill, cookbook, archive, or delete + - [#300](https://github.com/lightspeedwp/.github/issues/300) [Feature] Create the portable /skills library index + - [#301](https://github.com/lightspeedwp/.github/issues/301) [Feature] Create lightspeed-frontmatter-audit skill + - [#302](https://github.com/lightspeedwp/.github/issues/302) [Feature] Create lightspeed-pr-review skill + - [#303](https://github.com/lightspeedwp/.github/issues/303) [Feature] Create lightspeed-label-governance skill + - [#304](https://github.com/lightspeedwp/.github/issues/304) [Documentation] Create cookbook and favourite skills backlog + +## Milestones & Timeline + +- Milestone: Portable AI Plugin Restructure - Source Migration. +- Sequence: starts after the target skeleton and migration map are approved. + +## Acceptance Criteria + +- [ ] Reusable instructions moved or copied to `/instructions`. +- [ ] Reusable agent specs moved or copied to `/agents`. +- [ ] Active portable schemas moved or copied to `/.schemas`. +- [ ] Durable prompt workflows classified as skill, cookbook, archive, or delete. +- [ ] First three pilot skills drafted. +- [ ] Documentation and changelog updated. +- [ ] Tests/QA complete. +- [ ] Milestone closed. + +## Dependencies / Blockers + +- Parent epic 01 must define folder ownership and migration-map policy. +- Link validation must be available before deleting old paths. + +## Additional Context + +This epic should avoid rewriting JavaScript runners. Existing `scripts/agents` +remain legacy runtime until each runner is intentionally rewritten. + +## Definition of Ready (DoR) + +- [ ] Epic goal and scope defined. +- [ ] Linked stories/tasks listed. +- [ ] Milestones and timeline mapped. +- [ ] Dependencies/blockers identified. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. + +## Definition of Done (DoD) + +- [ ] All linked stories/tasks completed and closed. +- [ ] Documentation/changelog updated. +- [ ] QA and testing complete. +- [ ] Milestone closed and release notes prepared. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/parents/03-epic-core-plugin-and-tool-compatibility.md b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/03-epic-core-plugin-and-tool-compatibility.md new file mode 100644 index 000000000..e7ba07662 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/03-epic-core-plugin-and-tool-compatibility.md @@ -0,0 +1,69 @@ +--- +name: "Epic" +about: "Propose/manage a large, multi-part initiative or project grouping stories/features/tasks" +title: "[Epic] Portable AI plugin restructure: core plugin and compatibility" +labels: [status:needs-planning, priority:important, area:core, type:ai-ops, type:compatibility] +github_issue: "https://github.com/lightspeedwp/.github/issues/284" +--- + +## Epic Summary + +Build the smallest useful installable LightSpeed plugin first: +`plugins/lightspeed-github-ops`. Add the plugin package, manifests, selected +agent and skill content, and local installation documentation for supported AI +tools. + +## Linked Stories/Tasks + +- Batch 04: pilot plugin. +- Batch 06 compatibility smoke tests also link back here. +- Child issue links: + - [#305](https://github.com/lightspeedwp/.github/issues/305) [Feature] Create plugins/lightspeed-github-ops pilot plugin skeleton + - [#306](https://github.com/lightspeedwp/.github/issues/306) [Compatibility] Add VS Code and GitHub Copilot plugin manifest metadata + - [#307](https://github.com/lightspeedwp/.github/issues/307) [Compatibility] Add Codex/OpenAI plugin manifest for pilot package + - [#308](https://github.com/lightspeedwp/.github/issues/308) [Compatibility] Add Claude Code plugin manifest for pilot package + - [#309](https://github.com/lightspeedwp/.github/issues/309) [Feature] Package selected agent and pilot skills into lightspeed-github-ops + - [#310](https://github.com/lightspeedwp/.github/issues/310) [Documentation] Write pilot plugin installation and update guide + - [#317](https://github.com/lightspeedwp/.github/issues/317) [Compatibility] Run local tool smoke tests for the pilot plugin + +## Milestones & Timeline + +- Milestone: Portable AI Plugin Restructure - Pilot Plugin. +- Sequence: starts after pilot skills exist. + +## Acceptance Criteria + +- [ ] `plugins/lightspeed-github-ops` package exists. +- [ ] Plugin manifest references only existing package files. +- [ ] Codex/OpenAI, Claude Code, and VS Code/GitHub Copilot compatibility notes are drafted. +- [ ] Pilot plugin includes selected governance agent and skills. +- [ ] Local install guide is written. +- [ ] Documentation and changelog updated. +- [ ] Tests/QA complete. +- [ ] Milestone closed. + +## Dependencies / Blockers + +- Needs selected portable agents and skills from parent epic 02. +- Tool-specific manifest details should stay conservative until tested locally. + +## Additional Context + +Do not create block theme or block plugin packages in this epic beyond backlog +or placeholder planning files. + +## Definition of Ready (DoR) + +- [ ] Epic goal and scope defined. +- [ ] Linked stories/tasks listed. +- [ ] Milestones and timeline mapped. +- [ ] Dependencies/blockers identified. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. + +## Definition of Done (DoD) + +- [ ] All linked stories/tasks completed and closed. +- [ ] Documentation/changelog updated. +- [ ] QA and testing complete. +- [ ] Milestone closed and release notes prepared. diff --git a/.github/projects/active/portable-ai-plugin-restructure/issues/parents/04-epic-validation-docs-and-rollout.md b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/04-epic-validation-docs-and-rollout.md new file mode 100644 index 000000000..d46b91eb4 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/issues/parents/04-epic-validation-docs-and-rollout.md @@ -0,0 +1,73 @@ +--- +name: "Epic" +about: "Propose/manage a large, multi-part initiative or project grouping stories/features/tasks" +title: "[Epic] Portable AI plugin restructure: validation, docs, pilot, and release" +labels: [status:needs-planning, priority:important, area:core, area:ci, area:documentation] +github_issue: "https://github.com/lightspeedwp/.github/issues/285" +--- + +## Epic Summary + +Restart the validation layer smaller, document the architecture, test local +tool compatibility, pilot the plugin in one LightSpeed repository, and prepare +release readiness notes. + +## Linked Stories/Tasks + +- Batch 05: validation reset. +- Batch 06: pilot and release. +- Child issue links: + - [#311](https://github.com/lightspeedwp/.github/issues/311) [Maintenance] Fix invalid JSON schema syntax before validator reset + - [#312](https://github.com/lightspeedwp/.github/issues/312) [Build/CI] Split validation commands from mutating format and fix commands + - [#313](https://github.com/lightspeedwp/.github/issues/313) [Build/CI] Add read-only validate:structure command + - [#314](https://github.com/lightspeedwp/.github/issues/314) [Build/CI] Add read-only plugin and skill validators + - [#315](https://github.com/lightspeedwp/.github/issues/315) [Build/CI] Add read-only frontmatter and local link validators + - [#316](https://github.com/lightspeedwp/.github/issues/316) [Test Coverage] Fix misleading coverage reporting and noisy import side effects + - [#317](https://github.com/lightspeedwp/.github/issues/317) [Compatibility] Run local tool smoke tests for the pilot plugin + - [#318](https://github.com/lightspeedwp/.github/issues/318) [Feature] Pilot lightspeed-github-ops in one LightSpeed repository + - [#319](https://github.com/lightspeedwp/.github/issues/319) [Documentation] Document pilot findings and follow-up decisions + - [#320](https://github.com/lightspeedwp/.github/issues/320) [Research] Create future plugin pack backlogs + - [#321](https://github.com/lightspeedwp/.github/issues/321) [Release] Prepare pilot plugin restructure release readiness checklist + +## Milestones & Timeline + +- Milestone: Portable AI Plugin Restructure - Stabilisation. +- Sequence: runs after pilot plugin skeleton exists; some validation tasks can + start earlier if they are read-only. + +## Acceptance Criteria + +- [ ] Validation commands are non-mutating. +- [ ] Plugin, skill, frontmatter, structure, and link checks exist. +- [ ] Invalid JSON schema syntax fixed. +- [ ] Tool compatibility smoke tests documented. +- [ ] One LightSpeed repo pilot completed. +- [ ] Future plugin pack backlog drafted. +- [ ] Release readiness checklist completed. +- [ ] Milestone closed. + +## Dependencies / Blockers + +- Needs a stable pilot plugin package. +- Needs local dependencies bootstrapped with `npm ci`. + +## Additional Context + +This epic owns the safety net. It should prevent the migration from becoming +another large, hard-to-validate JavaScript layer too early. + +## Definition of Ready (DoR) + +- [ ] Epic goal and scope defined. +- [ ] Linked stories/tasks listed. +- [ ] Milestones and timeline mapped. +- [ ] Dependencies/blockers identified. +- [ ] Estimate added. +- [ ] Stakeholders/approvers listed. + +## Definition of Done (DoD) + +- [ ] All linked stories/tasks completed and closed. +- [ ] Documentation/changelog updated. +- [ ] QA and testing complete. +- [ ] Milestone closed and release notes prepared. diff --git a/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-baseline-command-output-2026-05-15.txt b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-baseline-command-output-2026-05-15.txt new file mode 100644 index 000000000..49119356d --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-baseline-command-output-2026-05-15.txt @@ -0,0 +1,856 @@ + +===== current branch ===== +$ git branch --show-current +work +EXIT_CODE=0 + +===== current commit ===== +$ git rev-parse HEAD +7cf938ac02eb1089697cdd107778537b83da22e0 +EXIT_CODE=0 + +===== npm ci ===== +$ npm ci +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. +npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. +npm warn deprecated @babel/plugin-proposal-class-properties@7.18.6: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. +npm warn deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead +npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported +npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead +npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported +npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported +npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported +npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported +npm warn deprecated @babel/plugin-proposal-object-rest-spread@7.20.7: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. +npm warn deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead +npm warn deprecated node-domexception@1.0.0: Use your platform's native DOMException instead +npm warn deprecated puppeteer@23.11.1: < 24.15.0 is no longer supported +npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options. + +> @lightspeedwp/github-community-health@0.2.0 prepare +> husky + + +added 1720 packages, and audited 1721 packages in 30s + +36 vulnerabilities (1 low, 17 moderate, 16 high, 2 critical) + +To address issues that do not require attention, run: + npm audit fix + +To address all issues (including breaking changes), run: + npm audit fix --force + +Run `npm audit` for details. +EXIT_CODE=0 + +===== validate agents ===== +$ npm run validate:agents +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. + +> @lightspeedwp/github-community-health@0.2.0 validate:agents +> node scripts/validation/validate-agent-frontmatter.js + +🔍 Validating Agent Frontmatter + +================================================================================ +ℹ️ adr.agent.md: Skipped (file_type=unknown) +✅ issues.agent.md: Valid +✅ labeling.agent.md: Valid +✅ linting.agent.md: Valid +✅ meta.agent.md: Valid +✅ metrics.agent.md: Valid +ℹ️ mode-demonstrate-understanding.agent.md: Skipped (file_type=unknown) +ℹ️ mode-document-reviewer.agent.md: Skipped (file_type=unknown) +ℹ️ mode-prd.agent.md: Skipped (file_type=unknown) +✅ mode-thinking.agent.md: Valid +✅ project-meta-sync.agent.md: Valid +✅ prompt-engineer.agent.md: Valid +✅ release.agent.md: Valid +✅ reporting.agent.md: Valid +✅ reviewer.agent.md: Valid +✅ task-planner.agent.md: Valid +ℹ️ task-researcher.agent.md: Skipped (file_type=unknown) +ℹ️ template.agent.md: Skipped (file_type=template) +✅ testing.agent.md: Valid + +================================================================================ + +📊 Validation Summary: + Total files: 13 + ✅ Passed: 13 + ❌ Failed: 0 + ⏭ Skipped: 6 + +✅ All agent files validated successfully! +EXIT_CODE=0 + +===== validate workflows ===== +$ npm run validate:workflows +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. + +> @lightspeedwp/github-community-health@0.2.0 validate:workflows +> node scripts/validation/validate-workflows.js + +Found 12 workflow files to validate + +🔍 Workflow Validation Results + +================================================================================ + +⚠️ WARNINGS: + changelog.yml: Missing permissions block (should default to contents: read) + changelog.yml: Consider adding concurrency to prevent overlapping runs + changelog.yml: Consider using fetch-depth for faster checkout + issues.yml: Consider adding concurrency to prevent overlapping runs + issues.yml: Consider using fetch-depth for faster checkout + labeling.yml: Consider adding caching for dependencies (npm/pip) + linting.yml: Missing permissions block (should default to contents: read) + linting.yml: Consider adding concurrency to prevent overlapping runs + linting.yml: Consider adding caching for dependencies (npm/pip) + linting.yml: Consider using fetch-depth for faster checkout + linting.yml: Job "lint": Step with run: should have descriptive name: + linting.yml: Job "lint": Step with run: should have descriptive name: + meta.yml: Consider adding caching for dependencies (npm/pip) + metrics.yml: Consider adding concurrency to prevent overlapping runs + metrics.yml: Consider adding caching for dependencies (npm/pip) + metrics.yml: Consider using fetch-depth for faster checkout + planner.yml: Consider adding concurrency to prevent overlapping runs + planner.yml: Consider using fetch-depth for faster checkout + project-meta-sync.yml: Consider adding concurrency to prevent overlapping runs + release.yml: Missing permissions block (should default to contents: read) + release.yml: Consider adding concurrency to prevent overlapping runs + release.yml: Consider adding caching for dependencies (npm/pip) + release.yml: Consider using fetch-depth for faster checkout + reporting.yml: Consider adding caching for dependencies (npm/pip) + reporting.yml: Consider using fetch-depth for faster checkout + reviewer.yml: Consider adding concurrency to prevent overlapping runs + reviewer.yml: Consider adding caching for dependencies (npm/pip) + reviewer.yml: Consider using fetch-depth for faster checkout + testing.yml: Missing permissions block (should default to contents: read) + testing.yml: Consider adding concurrency to prevent overlapping runs + testing.yml: Consider adding caching for dependencies (npm/pip) + testing.yml: Consider using fetch-depth for faster checkout + testing.yml: Job "check": Step with run: should have descriptive name: + testing.yml: Job "check": Step with run: should have descriptive name: + +================================================================================ + +📊 Summary: + Total workflows: 12 + ✅ Passed: 12 + ❌ Failed: 0 + ⚠️ Warnings: 34 + +⚠️ Validation passed with warnings. Consider addressing warnings above. +EXIT_CODE=0 + +===== validate json schemas ===== +$ npm run validate:json:schemas +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. + +> @lightspeedwp/github-community-health@0.2.0 validate:json:schemas +> node scripts/validation/validate-json.js --glob '.github/schemas/**/*.schema.json' --strict + +ℹ JSON Linting & Validation Tool v1.0.0 +ℹ ──────────────────────────────────────────────────────────── +ℹ Found 4 JSON file(s) + +──────────────────────────────────────────────────────────── +Runnable Commands +──────────────────────────────────────────────────────────── + +# Format JSON files: +npx prettier --write ".github/schemas/**/*.schema.json" + +# Strict syntax check: +npx jsonlint -cq .github/schemas/version.schema.json .github/schemas/project-fields.schema.json .github/schemas/frontmatter.schema.json ... +──────────────────────────────────────────────────────────── + +ℹ Formatting JSON files with Prettier... +✓ Formatted 4 file(s) +ℹ Validating JSON syntax with JSONLint... +✗ .github/schemas/project-fields.schema.json → Syntax error: Expected property name or '}' in JSON at position 387 +ℹ Syntax errors written to: reports/jsonlint.log + +============================================================ +JSON Validation Summary +============================================================ +Total files: 4 +Formatted: 4 +Syntax valid: 3 +Schema valid: 4 +Invalid: 1 +Schema spec: N/A +============================================================ + +Validation failed with 1 error(s) +See reports in: ./reports/ + +EXIT_CODE=1 + +===== npm test ===== +$ npm test +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. + +> @lightspeedwp/github-community-health@0.2.0 test +> npm run test:js + +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. + +> @lightspeedwp/github-community-health@0.2.0 test:js +> jest --config .jest.config.cjs --coverage --forceExit --detectOpenHandles + +[baseline-browser-mapping] The data in this module is over two months old. To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D` +PASS scripts/agents/includes/__tests__/label-utils.test.js + label-utils.js + labelsToMarkdownTable + ✓ converts labels array to Markdown table (5 ms) + ✓ handles single label (2 ms) + ✓ handles empty array (1 ms) + ✓ handles null input (7 ms) + ✓ handles undefined input (2 ms) + ✓ formats labels with special characters (2 ms) + ✓ handles labels with spaces (2 ms) + ✓ handles very long label names (1 ms) + ✓ handles many labels (1 ms) + ✓ preserves label order (1 ms) + ✓ handles labels with Markdown special characters (1 ms) + ✓ generates valid Markdown structure (1 ms) + diffLabels + ✓ identifies missing labels (2 ms) + ✓ identifies extra labels (1 ms) + ✓ identifies both missing and extra labels (1 ms) + ✓ returns empty arrays when labels match (2 ms) + ✓ handles empty current labels (1 ms) + ✓ handles empty canonical labels (2 ms) + ✓ handles both arrays empty (1 ms) + ✓ identifies multiple missing labels (1 ms) + ✓ identifies multiple extra labels (1 ms) + ✓ handles duplicate labels in current (1 ms) + ✓ preserves order of missing labels (12 ms) + ✓ preserves order of extra labels (1 ms) + ✓ handles labels with special characters (1 ms) + ✓ is case-sensitive (1 ms) + ✓ handles labels with spaces (1 ms) + integration scenarios + ✓ complete workflow: diff and table generation (2 ms) + ✓ generates report for label standardization (1 ms) + ✓ handles perfect alignment (no diff) (1 ms) + edge cases and error handling + ✓ handles very large arrays efficiently (6 ms) + ✓ handles labels with only whitespace (1 ms) + ✓ handles empty string labels (1 ms) + ✓ labelsToMarkdownTable handles array with null values (2 ms) + ✓ labelsToMarkdownTable handles array with undefined values (1 ms) + +PASS scripts/agents/includes/__tests__/fetch-canonical-labels.test.js + fetch-canonical-labels.js + fetchCanonicalLabels + ✓ should use default path if no path provided (5 ms) + ✓ should use custom path when provided (2 ms) + ✓ should return empty array for empty labels file (1 ms) + ✓ should extract label names from object format (2 ms) + ✓ should handle string format labels (2 ms) + ✓ should handle mixed string and object format (2 ms) + ✓ should handle labels with additional properties (14 ms) + ✓ should preserve label name order (2 ms) + ✓ should handle labels with special characters (1 ms) + ✓ should handle labels with emojis (1 ms) + ✓ should handle single label (2 ms) + ✓ should handle labels with hyphenated names (2 ms) + ✓ should handle labels with uppercase names (1 ms) + ✓ should handle real-world labels.yml structure (2 ms) + ✓ should throw error if file reading fails (18 ms) + ✓ should throw error if YAML parsing fails (3 ms) + ✓ should handle null or undefined YAML content (2 ms) + ✓ should return array of strings only (2 ms) + ✓ should handle labels with only name property (2 ms) + ✓ should handle large number of labels (2 ms) + ✓ should handle labels with numeric names (1 ms) + ✓ should handle labels with underscores (9 ms) + ✓ should handle labels with dots (1 ms) + ✓ should handle empty string label names (1 ms) + ✓ should call yaml.load with file content (1 ms) + ✓ should handle labels with whitespace in names (1 ms) + +PASS scripts/agents/includes/__tests__/build-labeling-report.test.js + build-labeling-report.js + buildLabelingReport + ✓ should generate report with matching labels (6 ms) + ✓ should show missing labels in report (2 ms) + ✓ should show extra labels in report (3 ms) + ✓ should show both missing and extra labels (2 ms) + ✓ should handle empty current labels (1 ms) + ✓ should handle empty canonical labels (2 ms) + ✓ should handle both empty arrays (3 ms) + ✓ should call labelsToMarkdownTable for current labels (2 ms) + ✓ should call labelsToMarkdownTable for canonical labels (1 ms) + ✓ should call labelsToMarkdownTable for missing labels (1 ms) + ✓ should call labelsToMarkdownTable for extra labels (2 ms) + ✓ should call diffLabels with correct arguments (1 ms) + ✓ should handle labels with special characters (2 ms) + ✓ should handle case-sensitive labels (2 ms) + ✓ should handle large number of labels (2 ms) + ✓ should generate proper Markdown structure (7 ms) + ✓ should maintain proper section order in report (1 ms) + ✓ should handle labels with emojis (2 ms) + ✓ should return string type (2 ms) + ✓ should not modify input arrays (1 ms) + +PASS scripts/agents/includes/__tests__/build-label-alias-map.test.js + build-label-alias-map.js + buildLabelAliasMap + ✓ should use default path if no path provided (5 ms) + ✓ should use custom path when provided (2 ms) + ✓ should return empty object if no labels in file (2 ms) + ✓ should build alias map for labels with aliases (5 ms) + ✓ should skip labels without aliases property (1 ms) + ✓ should skip labels with empty aliases array (2 ms) + ✓ should throw error on null label entries (18 ms) + ✓ should skip labels with non-array aliases (2 ms) + ✓ should handle labels with color and description (1 ms) + ✓ should handle multiple labels with multiple aliases (2 ms) + ✓ should handle case-sensitive aliases (2 ms) + ✓ should handle aliases with special characters (2 ms) + ✓ should throw error if file reading fails (3 ms) + ✓ should throw error if YAML parsing fails (2 ms) + ✓ should throw error with mixed valid and null entries (2 ms) + ✓ should handle empty YAML file (2 ms) + ✓ should handle YAML file with single label (2 ms) + ✓ should overwrite duplicate aliases with last occurrence (1 ms) + ✓ should handle real-world labels.yml structure (2 ms) + +PASS scripts/agents/__tests__/release.agent.test.js + Release Agent + Version Determination + ✓ should correctly bump patch version (4 ms) + ✓ should correctly bump minor version and reset patch (2 ms) + ✓ should correctly bump major version and reset minor/patch (1 ms) + ✓ should handle versions with leading zeros (11 ms) + Version Validation + ✓ should accept valid semantic versions (3 ms) + ✓ should reject invalid version formats (2 ms) + Changelog Validation + ✓ should detect unreleased section in changelog (2 ms) + ✓ should validate changelog has entries under unreleased (2 ms) + ✓ should reject changelog without unreleased section (2 ms) + ✓ should detect empty unreleased section (2 ms) + Dry Run Mode + ✓ should not execute commands in dry run mode (2 ms) + ✓ should log commands without executing in dry run (3 ms) + Git Tag Creation + ✓ should format git tag command correctly (2 ms) + ✓ should include changelog in tag message (1 ms) + Release PR Creation + ✓ should format release branch name correctly (2 ms) + ✓ should create PR from release branch to main (2 ms) + Error Handling + ✓ should throw error for missing changelog (16 ms) + ✓ should throw error for invalid version format (2 ms) + ✓ should handle git command failures gracefully (3 ms) + Changelog Update + ✓ should move unreleased entries to versioned section (1 ms) + ✓ should preserve unreleased section for next cycle (1 ms) + Scope Detection + ✓ should detect scope from command line args (2 ms) + ✓ should default to patch when no scope provided (5 ms) + ✓ should handle all valid scope values (2 ms) + +PASS scripts/agents/includes/__tests__/yaml-parser.test.js + yaml-parser.js + shim functionality + ✓ should be a shim file that exports canonical implementation (4 ms) + ✓ should use path.join for cross-platform path resolution (2 ms) + ✓ should support Node.js module.exports mechanism (1 ms) + backwards compatibility + ✓ should preserve existing require paths (1 ms) + ✓ should delegate to .github/scripts/yaml-parser.js (1 ms) + shim pattern + ✓ should follow the re-export shim pattern (2 ms) + ✓ should not contain business logic (1 ms) + ✓ should be a minimal file (1 ms) + module resolution + ✓ should use __dirname for relative path resolution (1 ms) + ✓ should construct platform-appropriate paths (1 ms) + +PASS scripts/agents/includes/__tests__/update-readme.test.js + update-readme.js + shim functionality + ✓ should be a shim file that delegates to canonical implementation (4 ms) + ✓ should use path.join for cross-platform path resolution (1 ms) + ✓ should support Node.js require mechanism (4 ms) + backwards compatibility + ✓ should preserve existing require paths (2 ms) + ✓ should delegate to .github/scripts/update-readme.js (2 ms) + shim pattern + ✓ should be a minimal delegation file (1 ms) + ✓ should not contain business logic (1 ms) + +PASS scripts/agents/includes/__tests__/readmeUtils.test.js + readmeUtils + ✓ findReadmeFiles finds README.md recursively (5 ms) + ✓ ensureStringInFile appends string if missing (3 ms) + ✓ updateReadme adds license badge and contributing link (2 ms) + +PASS scripts/agents/includes/__tests__/badgeUtils.test.js + badgeUtils + ✓ generateWorkflowBadges returns badge markdown (4 ms) + ✓ updateReadmeBadges inserts badge block (3 ms) + +Warning: Using local schema due to fetch error: +Warning: Using local schema due to fetch error: +Error: Missing required top-level field: reviews +PASS scripts/validation/__tests__/validate-coderabbit-yml.test.js + Coderabbit YML Validation + ✓ should validate a correct coderabbit.yml file (286 ms) + ✓ should fail on an invalid coderabbit.yml file (353 ms) + +PASS scripts/agents/includes/__tests__/footerUtils.test.js + footerUtils + ✓ getRandomFooter returns a footer from the list (4 ms) + ✓ ensureFooter replaces existing footer (4 ms) + ✓ ensureFooter appends if footer not present (2 ms) + +PASS scripts/agents/includes/__tests__/sync-version.test.js + sync-version (canonical includes) + ✓ loads without error (5 ms) + +PASS scripts/validation/__tests__/validate-frontmatter.test.js + Frontmatter Validation + ✓ should validate all markdown files and report errors for invalid frontmatter (328 ms) + +PASS scripts/validation/__tests__/validate-workflows.test.js + Workflow Validation + ✓ should run the workflow validation script and output expected result (233 ms) + +PASS scripts/validation/__tests__/validate-frontmatter-alt.test.js + validate-frontmatter alt mode + ✓ runs the alternate frontmatter validation stub (591 ms) + +PASS scripts/validation/__tests__/validate-agent-frontmatter.test.js + Agent Frontmatter Validation + ✓ should validate all agent spec files and report errors for invalid frontmatter (437 ms) + +PASS scripts/validation/__tests__/validate-json.test.js + JSON Validation + ✓ should run the JSON validation script and output placeholder message (260 ms) + +PASS scripts/validation/__tests__/run-agent-handoff-audit.test.js + run-agent-handoff-audit.js + ✓ exists in the validation folder (4 ms) + +PASS scripts/validation/__tests__/validate-changelog.test.js + validate-changelog.cjs + ✓ exists and can be referenced by newer tooling (4 ms) + +PASS scripts/validation/__tests__/validate-version.test.js + validate-version.cjs + ✓ is available for semantic version enforcement (4 ms) + +PASS scripts/validation/__tests__/validate-agents.test.js + validate-agents.js + ✓ exists so tooling has an entry point (4 ms) + +PASS scripts/agents/__tests__/mode-demonstrate-understanding.agent.test.js + mode-demonstrate-understanding.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/mode-document-reviewer.agent.test.js + mode-document-reviewer.agent + ✓ should be defined (5 ms) + +PASS scripts/agents/__tests__/reporting.agent.test.js + reporting.agent + ✓ agent module file exists (5 ms) + +PASS scripts/agents/__tests__/template.agent.test.js + template.agent + ✓ agent module file exists (4 ms) + +PASS scripts/agents/__tests__/labeling.agent.test.js + labeling.agent + ✓ agent module file exists (3 ms) + + console.error + Project sync failed: Error: LS_PROJECT_URL not set + at /workspace/.github/scripts/agents/project-meta-sync.agent.js:21:13 + at /workspace/.github/node_modules/@babel/runtime/helpers/regeneratorRuntime.js:52:18 + at Generator. (/workspace/.github/node_modules/@babel/runtime/helpers/regenerator.js:52:51) + at Generator.next (/workspace/.github/node_modules/@babel/runtime/helpers/regeneratorDefine.js:11:21) + at asyncGeneratorStep (/workspace/.github/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:17) + at _next (/workspace/.github/node_modules/@babel/runtime/helpers/asyncToGenerator.js:17:9) + at /workspace/.github/node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:7 + at new Promise () + at /workspace/.github/node_modules/@babel/runtime/helpers/asyncToGenerator.js:14:12 + at apply (/workspace/.github/scripts/agents/project-meta-sync.agent.js:278:2) + at apply (/workspace/.github/scripts/agents/project-meta-sync.agent.js:16:19) + at Object.run (/workspace/.github/scripts/agents/project-meta-sync.agent.js:280:1) + at Runtime._execModule (/workspace/.github/node_modules/jest-runtime/build/index.js:1268:24) + at Runtime._loadModule (/workspace/.github/node_modules/jest-runtime/build/index.js:944:12) + at Runtime.requireModule (/workspace/.github/node_modules/jest-runtime/build/index.js:832:12) + at Runtime.requireModuleOrMock (/workspace/.github/node_modules/jest-runtime/build/index.js:964:21) + at Object.require (/workspace/.github/scripts/agents/__tests__/project-meta-sync.agent.test.js:6:15) + at Runtime._execModule (/workspace/.github/node_modules/jest-runtime/build/index.js:1268:24) + at Runtime._loadModule (/workspace/.github/node_modules/jest-runtime/build/index.js:944:12) + at Runtime.requireModule (/workspace/.github/node_modules/jest-runtime/build/index.js:832:12) + at jestAdapter (/workspace/.github/node_modules/jest-circus/build/runner.js:95:13) + at runTestInternal (/workspace/.github/node_modules/jest-runner/build/index.js:275:16) + at runTest (/workspace/.github/node_modules/jest-runner/build/index.js:343:7) + + 273 | console.log("Project sync complete."); + 274 | } catch (error) { + > 275 | console.error("Project sync failed:", error); + | ^ + 276 | core.setFailed(error.message); + 277 | } + 278 | } + + at error (scripts/agents/project-meta-sync.agent.js:275:13) + at node_modules/@babel/runtime/helpers/regeneratorRuntime.js:52:18 + at Generator. (node_modules/@babel/runtime/helpers/regenerator.js:52:51) + at Generator.next (node_modules/@babel/runtime/helpers/regeneratorDefine.js:11:21) + at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:17) + at _next (node_modules/@babel/runtime/helpers/asyncToGenerator.js:17:9) + at node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:7 + at node_modules/@babel/runtime/helpers/asyncToGenerator.js:14:12 + at apply (scripts/agents/project-meta-sync.agent.js:278:2) + at apply (scripts/agents/project-meta-sync.agent.js:16:19) + at Object.run (scripts/agents/project-meta-sync.agent.js:280:1) + at Object.require (scripts/agents/__tests__/project-meta-sync.agent.test.js:6:15) + +::error::LS_PROJECT_URL not set +PASS scripts/agents/__tests__/project-meta-sync.agent.test.js + project-meta-sync.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/task-researcher.agent.test.js + task-researcher.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/prompt-engineer.agent.test.js + prompt-engineer.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/mode-thinking.agent.test.js + mode-thinking.agent + ✓ should be defined (3 ms) + +PASS scripts/agents/__tests__/task-planner.agent.test.js + task-planner.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/meta.agent.test.js + meta.agent + ✓ agent module file exists (4 ms) + +PASS scripts/agents/__tests__/issue-type.agent.test.js + issue-type.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/metrics.agent.test.js + metrics.agent + ✓ should be defined (20 ms) + +PASS scripts/agents/__tests__/linting.agent.test.js + linting.agent + ✓ should be defined (21 ms) + +PASS scripts/agents/__tests__/reviewer.agent.test.js + reviewer.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/mode-prd.agent.test.js + mode-prd.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/planner.agent.test.js + planner.agent + ✓ should be defined (3 ms) + +PASS scripts/agents/__tests__/testing.agent.test.js + testing.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/issues.agent.test.js + issues.agent + ✓ should be defined (4 ms) + +PASS scripts/agents/__tests__/adr.agent.test.js + adr.agent + ✓ should be defined (4 ms) + +----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +----------|---------|----------|---------|---------|------------------- +All files | 0 | 0 | 0 | 0 | +----------|---------|----------|---------|---------|------------------- +Test Suites: 41 passed, 41 total +Tests: 181 passed, 181 total +Snapshots: 0 total +Time: 14.895 s +Ran all test suites. +EXIT_CODE=0 + +===== npm audit ===== +$ npm audit --audit-level=low +npm warn Unknown env config "http-proxy". This will stop working in the next major version of npm. +# npm audit report + +@babel/plugin-transform-modules-systemjs 7.12.0 - 7.29.0 +Severity: high +@babel/plugin-transform-modules-systemjs generates arbitrary code when compiling malicious input - https://github.com/advisories/GHSA-fv7c-fp4j-7gwp +fix available via `npm audit fix` +node_modules/@babel/plugin-transform-modules-systemjs + +ajv <6.14.0 || >=7.0.0-alpha.0 <8.18.0 +Severity: moderate +ajv has ReDoS when using `$data` option - https://github.com/advisories/GHSA-2g4f-4pwh-qvx6 +ajv has ReDoS when using `$data` option - https://github.com/advisories/GHSA-2g4f-4pwh-qvx6 +fix available via `npm audit fix` +node_modules/@eslint/eslintrc/node_modules/ajv +node_modules/ajv +node_modules/eslint/node_modules/ajv +node_modules/npm-package-json-lint/node_modules/ajv + +basic-ftp <=5.3.0 +Severity: critical +Basic FTP has Path Traversal Vulnerability in its downloadToDir() method - https://github.com/advisories/GHSA-5rq4-664w-9x2c +basic-ftp: Incomplete CRLF Injection Protection Allows Arbitrary FTP Command Execution via Credentials and MKD Commands - https://github.com/advisories/GHSA-6v7q-wjvx-w8wg +basic-ftp vulnerable to denial of service via unbounded memory consumption in Client.list() - https://github.com/advisories/GHSA-rp42-5vxx-qpwr +basic-ftp allows a malicious FTP server to cause client-side denial of service via unbounded multiline control response buffering - https://github.com/advisories/GHSA-rpmf-866q-6p89 +fix available via `npm audit fix` +node_modules/basic-ftp + +brace-expansion <1.1.13 || >=2.0.0 <2.0.3 +Severity: moderate +brace-expansion: Zero-step sequence causes process hang and memory exhaustion - https://github.com/advisories/GHSA-f886-m6hf-6m8v +brace-expansion: Zero-step sequence causes process hang and memory exhaustion - https://github.com/advisories/GHSA-f886-m6hf-6m8v +fix available via `npm audit fix` +node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion +node_modules/brace-expansion +node_modules/glob/node_modules/brace-expansion +node_modules/typescript-eslint/node_modules/brace-expansion + +diff 5.0.0 - 5.2.1 +jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch - https://github.com/advisories/GHSA-73rr-hh4g-fpgx +fix available via `npm audit fix` +node_modules/diff + +dompurify <=3.3.3 +Severity: moderate +DOMPurify contains a Cross-site Scripting vulnerability - https://github.com/advisories/GHSA-v2wj-7wpq-c8vv +DOMPurify ADD_ATTR predicate skips URI validation - https://github.com/advisories/GHSA-cjmm-f4jc-qw8r +DOMPurify USE_PROFILES prototype pollution allows event handlers - https://github.com/advisories/GHSA-cj63-jhhr-wcxv +DOMPurify's ADD_TAGS function form bypasses FORBID_TAGS due to short-circuit evaluation - https://github.com/advisories/GHSA-39q2-94rc-95cp +DOMPurify: FORBID_TAGS bypassed by function-based ADD_TAGS predicate (asymmetry with FORBID_ATTR fix) - https://github.com/advisories/GHSA-h7mw-gpvr-xq4m +DOMPurify has a SAFE_FOR_TEMPLATES bypass in RETURN_DOM mode - https://github.com/advisories/GHSA-crv5-9vww-q3g8 +DOMPurify: Prototype Pollution to XSS Bypass via CUSTOM_ELEMENT_HANDLING Fallback - https://github.com/advisories/GHSA-v9jr-rg53-9pgp +DOMPurify is vulnerable to mutation-XSS via Re-Contextualization - https://github.com/advisories/GHSA-h8r8-wccr-v5f2 +fix available via `npm audit fix` +node_modules/dompurify + +fast-uri <=3.1.1 +Severity: high +fast-uri vulnerable to path traversal via percent-encoded dot segments - https://github.com/advisories/GHSA-q3j6-qgpj-74h6 +fast-uri vulnerable to host confusion via percent-encoded authority delimiters - https://github.com/advisories/GHSA-v39h-62p7-jpjc +fix available via `npm audit fix` +node_modules/fast-uri + +flatted <=3.4.1 +Severity: high +flatted vulnerable to unbounded recursion DoS in parse() revive phase - https://github.com/advisories/GHSA-25h7-pfq9-p65f +Prototype Pollution via parse() in NodeJS flatted - https://github.com/advisories/GHSA-rf6f-7fwh-wjgh +fix available via `npm audit fix` +node_modules/flatted + +handlebars 4.0.0 - 4.7.8 +Severity: critical +Handlebars.js has JavaScript Injection via AST Type Confusion by tampering @partial-block - https://github.com/advisories/GHSA-3mfm-83xf-c92r +Handlebars.js has JavaScript Injection via AST Type Confusion - https://github.com/advisories/GHSA-2w6w-674q-4c4q +Handlebars.js has Prototype Pollution Leading to XSS through Partial Template Injection - https://github.com/advisories/GHSA-2qvq-rjwj-gvw9 +Handlebars.js has a Prototype Method Access Control Gap via Missing __lookupSetter__ Blocklist Entry - https://github.com/advisories/GHSA-7rx3-28cr-v5wh +Handlebars.js has a Property Access Validation Bypass in container.lookup - https://github.com/advisories/GHSA-442j-39wm-28r2 +Handlebars.js has JavaScript Injection via AST Type Confusion when passing an object as dynamic partial - https://github.com/advisories/GHSA-xhpv-hc6g-r9c6 +Handlebars.js has Denial of Service via Malformed Decorator Syntax in Template Compilation - https://github.com/advisories/GHSA-9cx6-37pm-9jff +Handlebars.js has JavaScript Injection in CLI Precompiler via Unescaped Names and Options - https://github.com/advisories/GHSA-xjpj-3mr7-gcpf +fix available via `npm audit fix` +node_modules/handlebars + +ip-address <=10.1.0 +Severity: moderate +ip-address has XSS in Address6 HTML-emitting methods - https://github.com/advisories/GHSA-v2v4-37r5-5v8g +fix available via `npm audit fix` +node_modules/ip-address + +lodash <=4.17.23 +Severity: high +Lodash has Prototype Pollution Vulnerability in `_.unset` and `_.omit` functions - https://github.com/advisories/GHSA-xxjr-mmjv-4gpg +lodash vulnerable to Code Injection via `_.template` imports key names - https://github.com/advisories/GHSA-r5fr-rjxr-66jc +lodash vulnerable to Prototype Pollution via array path bypass in `_.unset` and `_.omit` - https://github.com/advisories/GHSA-f23m-r3pf-42rh +fix available via `npm audit fix` +node_modules/lodash + +lodash-es <=4.17.23 +Severity: high +Lodash has Prototype Pollution Vulnerability in `_.unset` and `_.omit` functions - https://github.com/advisories/GHSA-xxjr-mmjv-4gpg +lodash vulnerable to Code Injection via `_.template` imports key names - https://github.com/advisories/GHSA-r5fr-rjxr-66jc +lodash vulnerable to Prototype Pollution via array path bypass in `_.unset` and `_.omit` - https://github.com/advisories/GHSA-f23m-r3pf-42rh +fix available via `npm audit fix` +node_modules/lodash-es + @chevrotain/cst-dts-gen 11.0.0 - 11.1.0 + Depends on vulnerable versions of @chevrotain/gast + Depends on vulnerable versions of lodash-es + node_modules/@chevrotain/cst-dts-gen + @chevrotain/gast 11.0.0 - 11.1.0 + Depends on vulnerable versions of lodash-es + node_modules/@chevrotain/gast + chevrotain 11.0.0 - 11.1.0 + Depends on vulnerable versions of @chevrotain/cst-dts-gen + Depends on vulnerable versions of @chevrotain/gast + Depends on vulnerable versions of lodash-es + node_modules/chevrotain + langium 2.1.0 - 4.1.3 + Depends on vulnerable versions of chevrotain + node_modules/langium + @mermaid-js/parser <=0.6.3 + Depends on vulnerable versions of langium + node_modules/@mermaid-js/parser + mermaid <=10.9.5 || 11.0.0-alpha.1 - 11.14.0 + Depends on vulnerable versions of @mermaid-js/parser + node_modules/@mermaid-js/mermaid-cli/node_modules/mermaid + node_modules/mermaid + +markdown-it 13.0.0 - 14.1.0 +Severity: moderate +markdown-it is has a Regular Expression Denial of Service (ReDoS) - https://github.com/advisories/GHSA-38c4-r59v-3vqw +fix available via `npm audit fix --force` +Will install markdownlint-cli2@0.22.1, which is a breaking change +node_modules/markdown-it +node_modules/markdownlint-cli2/node_modules/markdown-it + markdownlint 0.26.0 - 0.37.4 + Depends on vulnerable versions of markdown-it + node_modules/markdownlint + markdownlint-cli2 0.18.0 - 0.20.0 + Depends on vulnerable versions of markdown-it + node_modules/markdownlint-cli2 + + +minimatch <=3.1.3 || 9.0.0 - 9.0.6 +Severity: high +minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern - https://github.com/advisories/GHSA-3ppc-4f35-3m26 +minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern - https://github.com/advisories/GHSA-3ppc-4f35-3m26 +minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments - https://github.com/advisories/GHSA-7r86-cg39-jmmj +minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments - https://github.com/advisories/GHSA-7r86-cg39-jmmj +minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions - https://github.com/advisories/GHSA-23c5-xmqv-rm74 +minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions - https://github.com/advisories/GHSA-23c5-xmqv-rm74 +fix available via `npm audit fix` +node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch +node_modules/glob/node_modules/minimatch +node_modules/minimatch +node_modules/typescript-eslint/node_modules/minimatch + @stoplight/spectral-core 1.2.1 - 1.21.1-beta-0.1 + Depends on vulnerable versions of minimatch + node_modules/@stoplight/spectral-core + @typescript-eslint/typescript-estree 6.16.0 - 7.5.0 + Depends on vulnerable versions of minimatch + node_modules/@typescript-eslint/typescript-estree + @typescript-eslint/parser 6.16.0 - 7.5.0 + Depends on vulnerable versions of @typescript-eslint/typescript-estree + node_modules/@typescript-eslint/parser + @typescript-eslint/type-utils 6.16.0 - 7.5.0 + Depends on vulnerable versions of @typescript-eslint/typescript-estree + Depends on vulnerable versions of @typescript-eslint/utils + node_modules/@typescript-eslint/type-utils + @typescript-eslint/eslint-plugin 6.16.0 - 7.5.0 + Depends on vulnerable versions of @typescript-eslint/type-utils + Depends on vulnerable versions of @typescript-eslint/utils + node_modules/@typescript-eslint/eslint-plugin + @typescript-eslint/utils 6.16.0 - 7.5.0 + Depends on vulnerable versions of @typescript-eslint/typescript-estree + node_modules/@typescript-eslint/utils + +picomatch <=2.3.1 || 4.0.0 - 4.0.3 +Severity: high +Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching - https://github.com/advisories/GHSA-3v7f-55p6-f55p +Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching - https://github.com/advisories/GHSA-3v7f-55p6-f55p +Picomatch has a ReDoS vulnerability via extglob quantifiers - https://github.com/advisories/GHSA-c2c7-rcm5-vvqj +Picomatch has a ReDoS vulnerability via extglob quantifiers - https://github.com/advisories/GHSA-c2c7-rcm5-vvqj +fix available via `npm audit fix` +node_modules/@jest/console/node_modules/picomatch +node_modules/@jest/core/node_modules/picomatch +node_modules/@jest/environment-jsdom-abstract/node_modules/picomatch +node_modules/@jest/expect/node_modules/picomatch +node_modules/@jest/fake-timers/node_modules/picomatch +node_modules/@jest/reporters/node_modules/picomatch +node_modules/@jest/test-sequencer/node_modules/picomatch +node_modules/jest-changed-files/node_modules/picomatch +node_modules/jest-circus/node_modules/picomatch +node_modules/jest-cli/node_modules/picomatch +node_modules/jest-config/node_modules/picomatch +node_modules/jest-each/node_modules/picomatch +node_modules/jest-environment-node/node_modules/picomatch +node_modules/jest-mock/node_modules/picomatch +node_modules/jest-resolve/node_modules/picomatch +node_modules/jest-runner/node_modules/picomatch +node_modules/jest-runtime/node_modules/picomatch +node_modules/jest-snapshot/node_modules/picomatch +node_modules/jest-watcher/node_modules/picomatch +node_modules/picomatch + +rollup <2.80.0 +Severity: high +Rollup 4 has Arbitrary File Write via Path Traversal - https://github.com/advisories/GHSA-mw96-cpmx-2vgc +fix available via `npm audit fix` +node_modules/rollup + @stoplight/spectral-ruleset-bundler <=1.6.3 + Depends on vulnerable versions of rollup + node_modules/@stoplight/spectral-ruleset-bundler + +undici <=6.23.0 +Severity: high +Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion - https://github.com/advisories/GHSA-g9mf-h72j-4rw9 +Undici has an HTTP Request/Response Smuggling issue - https://github.com/advisories/GHSA-2mjp-6q6p-2qxm +Undici has Unbounded Memory Consumption in WebSocket permessage-deflate Decompression - https://github.com/advisories/GHSA-vrm6-8vpv-qv8q +Undici has Unhandled Exception in WebSocket Client Due to Invalid server_max_window_bits Validation - https://github.com/advisories/GHSA-v9p9-hfj2-hcw8 +Undici has CRLF Injection in undici via `upgrade` option - https://github.com/advisories/GHSA-4992-7rv2-5pvq +fix available via `npm audit fix --force` +Will install @actions/github@9.1.1, which is a breaking change +node_modules/undici + @actions/github 6.0.0 - 8.0.0 + Depends on vulnerable versions of @actions/http-client + Depends on vulnerable versions of undici + node_modules/@actions/github + @actions/http-client 2.2.0 - 3.0.1 + Depends on vulnerable versions of undici + node_modules/@actions/http-client + +uuid 11.0.0 - 11.1.0 +Severity: moderate +uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided - https://github.com/advisories/GHSA-w5hq-g745-h8pq +fix available via `npm audit fix` +node_modules/@mermaid-js/mermaid-cli/node_modules/uuid + +yaml 2.0.0 - 2.8.2 +Severity: moderate +yaml is vulnerable to Stack Overflow via deeply nested YAML collections - https://github.com/advisories/GHSA-48c2-rrv3-qjmp +fix available via `npm audit fix --force` +Will install yaml@2.9.0, which is outside the stated dependency range +node_modules/yaml + +36 vulnerabilities (1 low, 17 moderate, 16 high, 2 critical) + +To address issues that do not require attention, run: + npm audit fix + +To address all issues (including breaking changes), run: + npm audit fix --force +EXIT_CODE=1 + +===== git status after baseline ===== +$ git status --short + M .github/schemas/frontmatter.schema.json + M .github/schemas/project-fields.schema.json +?? .github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-inventory-report-2026-05-15.md +?? .github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-migration-map-2026-05-15.csv +EXIT_CODE=0 diff --git a/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-baseline-report-2026-05-15.md b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-baseline-report-2026-05-15.md new file mode 100644 index 000000000..583a07e04 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-baseline-report-2026-05-15.md @@ -0,0 +1,75 @@ +--- +title: "Portable AI Plugin Restructure Baseline Validation And Dependency Report" +description: "Issue #287 baseline output for validation, tests, coverage, and dependency audit before portable plugin restructuring." +version: "v0.1.0" +last_updated: "2026-05-15" +file_type: "project-audit" +maintainer: "LightSpeed Team" +authors: ["Codex"] +license: "GPL-3.0" +tags: ["audit", "baseline", "validation", "dependencies", "plugin-restructure"] +domain: "governance" +stability: "draft" +references: + - path: "portable-ai-plugin-restructure-prd-2026-05-14.md" + description: "Active PRD defining the phased restructure." + - path: "issues/children/batch-00-planning-control/00-02-audit-baseline-validation-and-dependency-state.md" + description: "GitHub issue #287 local source draft." + - path: "portable-ai-plugin-restructure-baseline-command-output-2026-05-15.txt" + description: "Raw command output captured during baseline checks." +--- + +# Portable AI Plugin Restructure Baseline Validation And Dependency Report + +Parent epic: #282. Child issue: #287. + +## Baseline Summary + +| Check | Command | Exit code | Result | +| --- | --- | ---: | --- | +| current branch | `git branch --show-current` | 0 | Branch captured for traceability. | +| current commit | `git rev-parse HEAD` | 0 | Commit captured before restructure work. | +| npm ci | `npm ci` | 0 | Completed, with npm http-proxy and package deprecation warnings; installed 1,720 packages and reported 36 vulnerabilities. | +| validate agents | `npm run validate:agents` | 0 | Passed; 13 files passed and 6 were skipped by file_type. | +| validate workflows | `npm run validate:workflows` | 0 | Passed with 34 warnings about permissions, concurrency, caching, checkout depth, and unnamed run steps. | +| validate json schemas | `npm run validate:json:schemas` | 1 | Failed because `.github/schemas/project-fields.schema.json` contains invalid JSON syntax; command also formatted four files before failing, so schema mutations were reverted after capture. | +| npm test | `npm test` | 0 | Passed 41 suites and 181 tests, but coverage remained 0 percent and test output included noisy import-time side effects. | +| npm audit | `npm audit --audit-level=low` | 1 | Failed at audit-level low with 36 vulnerabilities: 1 low, 17 moderate, 16 high, and 2 critical. | +| git status after baseline | `git status --short` | 0 | Showed schema files modified by the JSON schema validator plus the new audit outputs; schema mutations were reverted because this issue records baseline only. | + +## Findings And Risks + +- `npm ci` completed successfully, but the install output reports 36 dependency vulnerabilities and several deprecated packages. +- `npm run validate:agents` is currently green, with skipped files that should be reviewed during the agent migration. +- `npm run validate:workflows` is currently green but noisy, with 34 warnings that should feed the workflow hardening backlog. +- `npm run validate:json:schemas` is not safe as a pure validation command because it formats files before validating syntax. +- `npm run validate:json:schemas` currently fails on `.github/schemas/project-fields.schema.json` due to invalid JSON syntax. +- `npm test` passes, but coverage output is 0 percent and at least one test imports code with side effects (`LS_PROJECT_URL not set`). +- `npm audit --audit-level=low` fails with 36 vulnerabilities: 1 low, 17 moderate, 16 high, and 2 critical. + +## Remediation Actions + +- Use #311 to fix invalid JSON schema syntax. +- Use #312 to split validation from formatting so validation commands are non-mutating by default. +- Use #313 through #315 for smaller structure, plugin/skill, frontmatter, and link validators. +- Use #316 to fix coverage reporting and import side effects. +- Review dependency remediation separately so security fixes do not get mixed into the restructure foundation PR. + +## Mutating Command Note + +`npm run validate:json:schemas` modified `.github/schemas/frontmatter.schema.json` and `.github/schemas/project-fields.schema.json` during baseline capture. Those changes were reverted after the command output was saved because issue #287 is an audit issue and should not fix findings. + +## Raw Output + +The raw command output is stored in [`portable-ai-plugin-restructure-baseline-command-output-2026-05-15.txt`](portable-ai-plugin-restructure-baseline-command-output-2026-05-15.txt). + +## Acceptance Criteria Status + +- [x] Record current branch and commit. +- [x] Run or document `npm ci`. +- [x] Run `npm run validate:agents`. +- [x] Run `npm run validate:workflows`. +- [x] Run `npm run validate:json:schemas`. +- [x] Run `npm test`. +- [x] Run `npm audit` or capture existing vulnerability count. +- [x] Note which commands are mutating or noisy. diff --git a/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-folder-skeleton-report-2026-05-15.md b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-folder-skeleton-report-2026-05-15.md new file mode 100644 index 000000000..cb38f3301 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-folder-skeleton-report-2026-05-15.md @@ -0,0 +1,52 @@ +--- +title: "Portable AI Plugin Restructure Folder Skeleton Report" +description: "Issue #289 confirmation that the target top-level folder skeleton exists without moving production assets." +version: "v0.1.0" +last_updated: "2026-05-15" +file_type: "project-report" +maintainer: "LightSpeed Team" +authors: ["Codex"] +license: "GPL-3.0" +tags: ["task", "folder-skeleton", "ai-ops", "plugin-restructure"] +domain: "governance" +stability: "draft" +references: + - path: "portable-ai-plugin-restructure-prd-2026-05-14.md" + description: "Active PRD defining the target portable AI operations structure." + - path: "issues/children/batch-01-skeleton-boundary/01-01-task-create-target-folder-skeleton.md" + description: "GitHub issue #289 local source draft." +--- + +# Portable AI Plugin Restructure Folder Skeleton Report + +Parent epic: #282. Child issue: #289. + +## Summary + +The target top-level folder skeleton has been created with `.gitkeep` markers only. No production assets were moved as part of this task. + +## Created Skeleton Paths + +| Path | Marker | Purpose | +| --- | --- | --- | +| `/.schemas` | `.schemas/.gitkeep` | Future root for portable schemas after validation reset. | +| `/agents` | `agents/.gitkeep` | Future root for portable agent specifications. | +| `/cookbook` | `cookbook/.gitkeep` | Future root for examples, recipes, and non-installable prompt patterns. | +| `/hooks` | `hooks/.gitkeep` | Future root for safe hooks and tool adapters. | +| `/instructions` | `instructions/.gitkeep` | Future root for portable instruction files. | +| `/plugins` | `plugins/.gitkeep` | Future root for installable plugin packages. | +| `/skills` | `skills/.gitkeep` | Future root for self-contained skills. | +| `/workflows` | `workflows/.gitkeep` | Future root for portable agentic workflows, distinct from GitHub Actions. | + +## Acceptance Criteria Status + +- [x] `/.schemas` exists. +- [x] `/agents` exists. +- [x] `/cookbook` exists. +- [x] `/hooks` exists. +- [x] `/instructions` exists. +- [x] `/plugins` exists. +- [x] `/skills` exists. +- [x] `/workflows` exists. +- [x] Existing `.github` behaviour is unchanged. +- [x] No existing production files were moved. diff --git a/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-inventory-report-2026-05-15.md b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-inventory-report-2026-05-15.md new file mode 100644 index 000000000..90438cf0e --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-inventory-report-2026-05-15.md @@ -0,0 +1,87 @@ +--- +title: "Portable AI Plugin Restructure Inventory And Migration Map" +description: "Issue #286 audit output for current AI, automation, governance, schema, prompt, and validation assets before portable plugin restructuring." +version: "v0.1.0" +last_updated: "2026-05-15" +file_type: "project-audit" +maintainer: "LightSpeed Team" +authors: ["Codex"] +license: "GPL-3.0" +tags: ["audit", "migration-map", "ai-ops", "plugin-restructure"] +domain: "governance" +stability: "draft" +references: + - path: "portable-ai-plugin-restructure-prd-2026-05-14.md" + description: "Active PRD defining the phased restructure." + - path: "issues/children/batch-00-planning-control/00-01-audit-current-asset-inventory-and-migration-map.md" + description: "GitHub issue #286 local source draft." + - path: "portable-ai-plugin-restructure-migration-map-2026-05-15.csv" + description: "Machine-readable migration decision map." +--- + +# Portable AI Plugin Restructure Inventory And Migration Map + +Parent epic: #282. Child issue: #286. + +## Scope + +This audit inventories the current files under `.github/agents`, `.github/instructions`, `.github/prompts`, `.github/schemas`, `.github/workflows`, `scripts/agents`, `scripts/validation`, `.github/ISSUE_TEMPLATE`, and `.github/SAVED_REPLIES`, excluding vendored `node_modules` content. + +## Summary + +- Total inventoried files: **385**. +- Files with hard-coded `.github/*` references: **150**. +- Files without detected hard-coded `.github/*` references: **235**. + +### Files By Asset Type + +| Asset type | Count | +| --- | ---: | +| `agent-spec` | 21 | +| `github-action-workflow` | 14 | +| `github-issue-template` | 29 | +| `instruction` | 54 | +| `legacy-agent-runtime` | 82 | +| `legacy-validation-runtime` | 25 | +| `prompt` | 73 | +| `saved-reply` | 81 | +| `schema` | 6 | + +### Files By Migration Decision + +| Decision | Count | Meaning | +| --- | ---: | --- | +| `archive` | 21 | Keep archived unless later reviewed. | +| `convert` | 74 | Convert into a skill, cookbook entry, or split repo-local/portable asset. | +| `defer` | 107 | Keep in place until a later scoped rewrite or validation reset. | +| `delete` | 7 | Remove after confirmation. | +| `keep` | 117 | Remain in the current path. | +| `move` | 59 | Move to the new top-level source collection after references are updated. | + +## Key Findings + +- `.github` contains both GitHub-native governance content and portable AI operations content, so migration must be decision-led rather than a bulk move. +- Issue templates, saved replies, and GitHub Actions should remain under `.github` because they provide repository and organisation governance behaviour. +- Agent specs, instruction files, prompt workflows, and schemas are the strongest candidates for top-level portable source collections, but most require reference updates before moving. +- Legacy JavaScript runners and validators should be deferred and rewritten selectively; moving them as-is would preserve the current complexity that the PRD wants to reduce. +- Zero-byte macOS `Icon` metadata files are flagged for deletion after the link audit confirms no references. + +## Remediation Links + +- Use issue #287 to capture the command and dependency baseline before changing validation behaviour. +- Use issues #289 and #290 for the top-level skeleton and ownership indexes. +- Use issues #293-#298 for portable instruction, agent, schema, and workflow migration slices. +- Use issues #299-#304 for prompt-to-skill/cookbook conversion decisions. +- Use issues #311-#316 for the smaller non-mutating validation reset. + +## Migration Map + +The canonical row-level decision map is stored in [`portable-ai-plugin-restructure-migration-map-2026-05-15.csv`](portable-ai-plugin-restructure-migration-map-2026-05-15.csv). + +## Acceptance Criteria Status + +- [x] Inventory `.github/agents`, `.github/instructions`, `.github/prompts`, `.github/schemas`, `.github/workflows`, `scripts/agents`, and `scripts/validation`. +- [x] Record decision for each item: keep, move, convert, archive, delete, or defer. +- [x] Capture target path for every moved or converted asset. +- [x] Flag assets with hard-coded `.github/*` paths. +- [x] Store the table in the active project folder. diff --git a/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-migration-map-2026-05-15.csv b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-migration-map-2026-05-15.csv new file mode 100644 index 000000000..f23bfca79 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-migration-map-2026-05-15.csv @@ -0,0 +1,386 @@ +source_path,asset_type,decision,target_path,hard_coded_github_path,follow_up_issue,rationale +.github/agents/README.md,agent-spec,move,agents/README.md,yes,,Portable agent index should move to /agents; keep repo-only notes in .github if needed. +.github/agents/adr.agent.md,agent-spec,move,agents/adr.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/agent.md,agent-spec,move,agents/agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/issues.agent.md,agent-spec,move,agents/issues.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/labeling.agent.md,agent-spec,move,agents/labeling.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/linting.agent.md,agent-spec,move,agents/linting.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/meta.agent.md,agent-spec,move,agents/meta.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/metrics.agent.md,agent-spec,move,agents/metrics.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/mode-demonstrate-understanding.agent.md,agent-spec,move,agents/mode-demonstrate-understanding.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/mode-document-reviewer.agent.md,agent-spec,move,agents/mode-document-reviewer.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/mode-prd.agent.md,agent-spec,move,agents/mode-prd.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/mode-thinking.agent.md,agent-spec,move,agents/mode-thinking.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/project-meta-sync.agent.md,agent-spec,move,agents/project-meta-sync.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/prompt-engineer.agent.md,agent-spec,move,agents/prompt-engineer.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/release.agent.md,agent-spec,move,agents/release.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/reporting.agent.md,agent-spec,move,agents/reporting.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/reviewer.agent.md,agent-spec,move,agents/reviewer.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/task-planner.agent.md,agent-spec,move,agents/task-planner.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/task-researcher.agent.md,agent-spec,move,agents/task-researcher.agent.md,no,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/template.agent.md,agent-spec,move,agents/template.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/agents/testing.agent.md,agent-spec,move,agents/testing.agent.md,yes,,Reusable agent spec candidate for /agents; confirm repo-only assumptions before moving. +.github/instructions/.archive/CONSOLIDATION_MIGRATION_GUIDE.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/FRONTMATTER_SCHEMA.md.backup,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/INSTRUCTION_CONSOLIDATION_MIGRATION.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/ISSUE_TYPES.md.backup,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/README.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/WORKFLOWS.md.backup,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/agents.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/file-management.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/frontmatter.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/javascript.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/jest.instructions.md,instruction,archive,,no,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/jsdoc.instructions.md,instruction,archive,,no,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/json.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/markdown.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/naming-conventions.instructions.md,instruction,archive,,no,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/reporting.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/reviewer.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/saved-replies.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/testing.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/tests.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/.archive/yaml.instructions.md,instruction,archive,,yes,,Legacy archived instruction; do not migrate by default unless a later issue proves value. +.github/instructions/README.md,instruction,move,instructions/README.md,no,,Portable instruction index candidate; keep a small .github repo-local index if needed. +.github/instructions/a11y.instructions.md,instruction,move,instructions/a11y.instructions.md,no,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/agent-spec.instructions.md,instruction,move,instructions/agent-spec.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/automation.instructions.md,instruction,move,instructions/automation.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/coding-standards.instructions.md,instruction,move,instructions/coding-standards.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/community-standards.instructions.md,instruction,move,instructions/community-standards.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/copilot-operations.instructions.md,instruction,move,instructions/copilot-operations.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/docs.instructions.md,instruction,move,instructions/docs.instructions.md,no,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/documentation-formats.instructions.md,instruction,move,instructions/documentation-formats.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/file-organisation.instructions.md,instruction,convert,instructions/file-organisation.instructions.md + .github/instructions/file-organisation.instructions.md,yes,,Split portable placement rules from repo-local .github governance rules. +.github/instructions/instructions.instructions.md,instruction,move,instructions/instructions.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/issues.instructions.md,instruction,move,instructions/issues.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/labeling.instructions.md,instruction,move,instructions/labeling.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/languages.instructions.md,instruction,move,instructions/languages.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/linting.instructions.md,instruction,move,instructions/linting.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/mermaid.instructions.md,instruction,move,instructions/mermaid.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/meta.instructions.md,instruction,move,instructions/meta.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/metrics.instructions.md,instruction,move,instructions/metrics.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/planner.instructions.md,instruction,move,instructions/planner.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/project-meta-sync.instructions.md,instruction,move,instructions/project-meta-sync.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/prompt.instructions.md,instruction,move,instructions/prompt.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/pull-requests.instructions.md,instruction,move,instructions/pull-requests.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/quality-assurance.instructions.md,instruction,move,instructions/quality-assurance.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/readme.instructions.md,instruction,move,instructions/readme.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/release.instructions.md,instruction,move,instructions/release.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/reporting.instructions.md,instruction,move,instructions/reporting.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/self-explanatory-code-commenting.instructions.md,instruction,move,instructions/self-explanatory-code-commenting.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/spec-driven-workflow.instructions.md,instruction,move,instructions/spec-driven-workflow.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/task-implementation.instructions.md,instruction,move,instructions/task-implementation.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/tasksync.instructions.md,instruction,move,instructions/tasksync.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/template.instructions.md,instruction,move,instructions/template.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/tools.instructions.md,instruction,move,instructions/tools.instructions.md,no,,Portable instruction candidate; remove .github path assumptions during migration. +.github/instructions/workflows.instructions.md,instruction,move,instructions/workflows.instructions.md,yes,,Portable instruction candidate; remove .github path assumptions during migration. +.github/prompts/README.md,prompt,convert,cookbook/README.md,no,,Prompt indexes become cookbook/backlog material rather than first-class installable assets. +.github/prompts/add-frontmatter.prompt.md,prompt,convert,skills/add-frontmatter/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/agent-task-markdown-linting.prompt.md,prompt,convert,skills/agent-task-markdown-linting/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/agents.prompt.md,prompt,convert,skills/agents/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/architecture-blueprint-generator.prompt.md,prompt,convert,cookbook/architecture-blueprint-generator.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/breakdown-epic-arch.prompt.md,prompt,convert,cookbook/breakdown-epic-arch.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/breakdown-epic-pm.prompt.md,prompt,convert,cookbook/breakdown-epic-pm.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/breakdown-feature-implementation.prompt.md,prompt,convert,skills/breakdown-feature-implementation/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/breakdown-feature-prd.prompt.md,prompt,convert,cookbook/breakdown-feature-prd.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/breakdown-plan.prompt.md,prompt,convert,cookbook/breakdown-plan.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/breakdown-test.prompt.md,prompt,convert,cookbook/breakdown-test.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/build-agent-and-tests.prompt.md,prompt,convert,skills/build-agent-and-tests/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/changelog-lines.prompt.md,prompt,convert,skills/changelog-lines/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/changelog.prompt.md,prompt,convert,skills/changelog/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/code-review.prompt.md,prompt,convert,skills/code-review/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/conventional-commit.prompt.md,prompt,convert,cookbook/conventional-commit.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/create-agentsmd.prompt.md,prompt,convert,skills/create-agentsmd/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-architectural-decision-record.prompt.md,prompt,convert,cookbook/create-architectural-decision-record.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/create-github-action-workflow-specification.prompt.md,prompt,convert,skills/create-github-action-workflow-specification/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-github-issue-feature-from-specification.prompt.md,prompt,convert,skills/create-github-issue-feature-from-specification/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-github-issues-feature-from-implementation-plan.prompt.md,prompt,convert,skills/create-github-issues-feature-from-implementation-plan/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-github-issues-for-unmet-specification-requirements.prompt.md,prompt,convert,skills/create-github-issues-for-unmet-specification-requirements/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-github-pull-request-from-specification.prompt.md,prompt,convert,skills/create-github-pull-request-from-specification/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-implementation-plan.prompt.md,prompt,convert,skills/create-implementation-plan/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-llms.prompt.md,prompt,convert,cookbook/create-llms.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/create-readme.prompt.md,prompt,convert,skills/create-readme/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/create-specification.prompt.md,prompt,convert,skills/create-specification/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/dependency-audit-agent.prompt.md,prompt,convert,skills/dependency-audit-agent/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/docs-from-comments.prompt.md,prompt,convert,cookbook/docs-from-comments.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/docs-writeup.prompt.md,prompt,convert,cookbook/docs-writeup.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/documentation-writer.prompt.md,prompt,convert,cookbook/documentation-writer.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/editorconfig.prompt.md,prompt,convert,cookbook/editorconfig.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/finalize-agent-prompt.prompt.md,prompt,convert,skills/finalize-agent-prompt/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/folder-structure-blueprint-generator.prompt.md,prompt,convert,cookbook/folder-structure-blueprint-generator.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/generate-changelog.prompt.md,prompt,convert,skills/generate-changelog/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/generate-custom-instructions-from-codebase.prompt.md,prompt,convert,cookbook/generate-custom-instructions-from-codebase.prompt.md,yes,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/generate-gh-workflow.prompt.md,prompt,convert,skills/generate-gh-workflow/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/generate-pr-description.prompt.md,prompt,convert,cookbook/generate-pr-description.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/git-flow-branch-creator.prompt.md,prompt,convert,cookbook/git-flow-branch-creator.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/github-copilot-starter.prompt.md,prompt,convert,cookbook/github-copilot-starter.prompt.md,yes,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/inline-documentation.prompt.md,prompt,convert,cookbook/inline-documentation.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/labeling.prompt.md,prompt,convert,skills/labeling/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/model-recommendation.prompt.md,prompt,convert,cookbook/model-recommendation.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/multi-stage-dockerfile.prompt.md,prompt,convert,cookbook/multi-stage-dockerfile.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/my-issues.prompt.md,prompt,convert,cookbook/my-issues.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/my-pull-requests.prompt.md,prompt,convert,cookbook/my-pull-requests.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/normalize-docs-labels.prompt.md,prompt,convert,skills/normalize-docs-labels/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/pr-description.prompt.md,prompt,convert,cookbook/pr-description.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/pr-review.prompt.md,prompt,convert,skills/pr-review/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/project-workflow-analysis-blueprint-generator.prompt.md,prompt,convert,skills/project-workflow-analysis-blueprint-generator/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/prompt-builder.prompt.md,prompt,convert,cookbook/prompt-builder.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/prompts.md,prompt,convert,cookbook/prompts.md,no,,Prompt indexes become cookbook/backlog material rather than first-class installable assets. +.github/prompts/python-mcp-server-generator.prompt.md,prompt,convert,cookbook/python-mcp-server-generator.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/readme-blueprint-generator.prompt.md,prompt,convert,skills/readme-blueprint-generator/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/release.prompt.md,prompt,convert,skills/release/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/remember-interactive-programming.prompt.md,prompt,convert,cookbook/remember-interactive-programming.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/remember.prompt.md,prompt,convert,cookbook/remember.prompt.md,yes,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/repo-story-time.prompt.md,prompt,convert,cookbook/repo-story-time.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/reporting.prompt.md,prompt,convert,cookbook/reporting.prompt.md,yes,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/review-and-refactor.prompt.md,prompt,convert,skills/review-and-refactor/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/saved-replies.prompt.md,prompt,convert,cookbook/saved-replies.prompt.md,yes,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/shuffle-json-data.prompt.md,prompt,convert,cookbook/shuffle-json-data.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/spec-driven-workflow-start.prompt.md,prompt,convert,skills/spec-driven-workflow-start/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/technology-stack-blueprint-generator.prompt.md,prompt,convert,cookbook/technology-stack-blueprint-generator.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/testing.prompt.md,prompt,convert,skills/testing/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/update-implementation-plan.prompt.md,prompt,convert,skills/update-implementation-plan/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/update-llms.prompt.md,prompt,convert,cookbook/update-llms.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/update-markdown-file-index.prompt.md,prompt,convert,cookbook/update-markdown-file-index.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/update-mermaid-diagrams.prompt.md,prompt,convert,cookbook/update-mermaid-diagrams.prompt.md,yes,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/update-oo-component-documentation.prompt.md,prompt,convert,cookbook/update-oo-component-documentation.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/prompts/update-readmes.prompt.md,prompt,convert,skills/update-readmes/SKILL.md,yes,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/update-specification.prompt.md,prompt,convert,skills/update-specification/SKILL.md,no,,Durable workflow prompt should become a self-contained skill if still useful. +.github/prompts/write-coding-standards-from-file.prompt.md,prompt,convert,cookbook/write-coding-standards-from-file.prompt.md,no,,Example or one-off prompt should become a cookbook recipe/backlog entry if retained. +.github/schemas/README.md,schema,move,.schemas/README.md,yes,,Portable schema index should move to the root schema collection after reset. +.github/schemas/changelog.schema.json,schema,move,.schemas/changelog.schema.json,no,,Portable/validation schemas should move to /.schemas after simplification and non-mutating validators are ready. +.github/schemas/coderabbit-overrides.v2.json,schema,move,.schemas/coderabbit-overrides.v2.json,no,,Portable/validation schemas should move to /.schemas after simplification and non-mutating validators are ready. +.github/schemas/frontmatter.schema.json,schema,move,.schemas/frontmatter.schema.json,yes,,Portable/validation schemas should move to /.schemas after simplification and non-mutating validators are ready. +.github/schemas/project-fields.schema.json,schema,move,.schemas/project-fields.schema.json,no,,Portable/validation schemas should move to /.schemas after simplification and non-mutating validators are ready. +.github/schemas/version.schema.json,schema,move,.schemas/version.schema.json,no,,Portable/validation schemas should move to /.schemas after simplification and non-mutating validators are ready. +.github/workflows/.gitignore,github-action-workflow,keep,.github/workflows/.gitignore,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/README.md,github-action-workflow,keep,.github/workflows/README.md,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/changelog.yml,github-action-workflow,keep,.github/workflows/changelog.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/issues.yml,github-action-workflow,keep,.github/workflows/issues.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/labeling.yml,github-action-workflow,keep,.github/workflows/labeling.yml,yes,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/linting.yml,github-action-workflow,keep,.github/workflows/linting.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/meta.yml,github-action-workflow,keep,.github/workflows/meta.yml,yes,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/metrics.yml,github-action-workflow,keep,.github/workflows/metrics.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/planner.yml,github-action-workflow,keep,.github/workflows/planner.yml,yes,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/project-meta-sync.yml,github-action-workflow,keep,.github/workflows/project-meta-sync.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/release.yml,github-action-workflow,keep,.github/workflows/release.yml,yes,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/reporting.yml,github-action-workflow,keep,.github/workflows/reporting.yml,yes,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/reviewer.yml,github-action-workflow,keep,.github/workflows/reviewer.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +.github/workflows/testing.yml,github-action-workflow,keep,.github/workflows/testing.yml,no,,GitHub Actions remain under .github/workflows; create separate portable runbooks later only when needed. +scripts/agents/__tests__/README.md,legacy-agent-runtime,defer,scripts/agents/__tests__/README.md,yes,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/adr.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/adr.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/issue-type.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/issue-type.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/issues.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/issues.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/labeling.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/labeling.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/linting.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/linting.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/meta.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/meta.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/metrics.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/metrics.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/mode-demonstrate-understanding.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/mode-demonstrate-understanding.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/mode-document-reviewer.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/mode-document-reviewer.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/mode-prd.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/mode-prd.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/mode-thinking.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/mode-thinking.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/planner.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/planner.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/project-meta-sync.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/project-meta-sync.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/prompt-engineer.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/prompt-engineer.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/release.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/release.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/reporting.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/reporting.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/reviewer.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/reviewer.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/task-planner.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/task-planner.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/task-researcher.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/task-researcher.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/template.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/template.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/__tests__/testing.agent.test.js,legacy-agent-runtime,defer,scripts/agents/__tests__/testing.agent.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/adr.agent.js,legacy-agent-runtime,defer,hooks/adr.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/includes/README.md,legacy-agent-runtime,defer,scripts/agents/includes/README.md,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/__tests__/README.md,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/README.md,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/badgeUtils.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/badgeUtils.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/build-label-alias-map.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/build-label-alias-map.test.js,yes,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/build-labeling-report.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/build-labeling-report.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/fetch-canonical-labels.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/fetch-canonical-labels.test.js,yes,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/footerUtils.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/footerUtils.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/label-utils.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/label-utils.test.js,yes,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/readmeUtils.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/readmeUtils.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/sync-version.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/sync-version.test.js,no,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/update-readme.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/update-readme.test.js,yes,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/__tests__/yaml-parser.test.js,legacy-agent-runtime,defer,scripts/agents/includes/__tests__/yaml-parser.test.js,yes,,Keep legacy tests with the legacy runtime until replacement hooks/workflows are designed. +scripts/agents/includes/badgeUtils.js,legacy-agent-runtime,defer,scripts/agents/includes/badgeUtils.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/badges.js,legacy-agent-runtime,defer,scripts/agents/includes/badges.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/build-label-alias-map.js,legacy-agent-runtime,defer,scripts/agents/includes/build-label-alias-map.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/build-labeling-report.js,legacy-agent-runtime,defer,scripts/agents/includes/build-labeling-report.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/changelogUtils.cjs,legacy-agent-runtime,defer,scripts/agents/includes/changelogUtils.cjs,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/check-template-labels.js,legacy-agent-runtime,defer,scripts/agents/includes/check-template-labels.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/en-gb-normalise.js,legacy-agent-runtime,defer,scripts/agents/includes/en-gb-normalise.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/fetch-canonical-labels.js,legacy-agent-runtime,defer,scripts/agents/includes/fetch-canonical-labels.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/footer-content.json,legacy-agent-runtime,defer,scripts/agents/includes/footer-content.json,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/footerUtils.js,legacy-agent-runtime,defer,scripts/agents/includes/footerUtils.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/header-content.json,legacy-agent-runtime,defer,scripts/agents/includes/header-content.json,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/header-footer.js,legacy-agent-runtime,defer,scripts/agents/includes/header-footer.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/label-heuristics.js,legacy-agent-runtime,defer,scripts/agents/includes/label-heuristics.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/label-lookup.js,legacy-agent-runtime,defer,scripts/agents/includes/label-lookup.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/label-reporting.js,legacy-agent-runtime,defer,scripts/agents/includes/label-reporting.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/label-sync.js,legacy-agent-runtime,defer,scripts/agents/includes/label-sync.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/label-utils.js,legacy-agent-runtime,defer,scripts/agents/includes/label-utils.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/labeler-utils.js,legacy-agent-runtime,defer,scripts/agents/includes/labeler-utils.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/readmeUtils.js,legacy-agent-runtime,defer,scripts/agents/includes/readmeUtils.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/report-writer.js,legacy-agent-runtime,defer,scripts/agents/includes/report-writer.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/retry-helper.js,legacy-agent-runtime,defer,scripts/agents/includes/retry-helper.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/status-enforcer.js,legacy-agent-runtime,defer,scripts/agents/includes/status-enforcer.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/sync-version.js,legacy-agent-runtime,defer,scripts/agents/includes/sync-version.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/type-lookup.js,legacy-agent-runtime,defer,scripts/agents/includes/type-lookup.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/update-readme.js,legacy-agent-runtime,defer,scripts/agents/includes/update-readme.js,no,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/yaml-parser.js,legacy-agent-runtime,defer,scripts/agents/includes/yaml-parser.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/includes/yaml-validator.js,legacy-agent-runtime,defer,scripts/agents/includes/yaml-validator.js,yes,,Shared legacy utility; rewrite only the parts needed by new hooks or validators. +scripts/agents/issue-type.agent.js,legacy-agent-runtime,defer,hooks/issue-type.agent.js,no,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/issues.agent.js,legacy-agent-runtime,defer,hooks/issues.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/labeling.agent.js,legacy-agent-runtime,defer,hooks/labeling.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/linting.agent.js,legacy-agent-runtime,defer,hooks/linting.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/meta.agent.js,legacy-agent-runtime,defer,hooks/meta.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/metrics.agent.js,legacy-agent-runtime,defer,hooks/metrics.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/mode-demonstrate-understanding.agent.js,legacy-agent-runtime,defer,hooks/mode-demonstrate-understanding.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/mode-document-reviewer.agent.js,legacy-agent-runtime,defer,hooks/mode-document-reviewer.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/mode-prd.agent.js,legacy-agent-runtime,defer,hooks/mode-prd.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/mode-thinking.agent.js,legacy-agent-runtime,defer,hooks/mode-thinking.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/planner.agent.js,legacy-agent-runtime,defer,hooks/planner.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/project-meta-sync.agent.js,legacy-agent-runtime,defer,hooks/project-meta-sync.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/prompt-engineer.agent.js,legacy-agent-runtime,defer,hooks/prompt-engineer.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/release.agent.js,legacy-agent-runtime,defer,hooks/release.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/reporting.agent.js,legacy-agent-runtime,defer,hooks/reporting.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/reviewer.agent.js,legacy-agent-runtime,defer,hooks/reviewer.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/task-planner.agent.js,legacy-agent-runtime,defer,hooks/task-planner.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/task-researcher.agent.js,legacy-agent-runtime,defer,hooks/task-researcher.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/template.agent.js,legacy-agent-runtime,defer,hooks/template.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/agents/testing.agent.js,legacy-agent-runtime,defer,hooks/testing.agent.js,yes,,Legacy runner; do not move blindly. Rewrite as a safe hook/workflow only when scoped. +scripts/validation/README.md,legacy-validation-runtime,defer,workflows/validation/README.md,yes,,"Use as reference for the smaller validation reset, not as-is migration." +scripts/validation/__fixtures__/invalid-coderabbit.yml,legacy-validation-runtime,defer,scripts/validation/__fixtures__/invalid-coderabbit.yml,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__fixtures__/valid-coderabbit.yml,legacy-validation-runtime,defer,scripts/validation/__fixtures__/valid-coderabbit.yml,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/run-agent-handoff-audit.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/run-agent-handoff-audit.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-agent-frontmatter.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-agent-frontmatter.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-agents.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-agents.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-changelog.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-changelog.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-coderabbit-yml.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-coderabbit-yml.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-frontmatter-alt.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-frontmatter-alt.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-frontmatter.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-frontmatter.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-json.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-json.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-version.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-version.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/__tests__/validate-workflows.test.js,legacy-validation-runtime,defer,scripts/validation/__tests__/validate-workflows.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/package.json,legacy-validation-runtime,defer,workflows/validation/package.json,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/run-agent-handoff-audit.js,legacy-validation-runtime,defer,workflows/validation/run-agent-handoff-audit.js,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/update-coderabbit-schema.cjs,legacy-validation-runtime,defer,workflows/validation/update-coderabbit-schema.cjs,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-agent-frontmatter.js,legacy-validation-runtime,defer,workflows/validation/validate-agent-frontmatter.js,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-agents.js,legacy-validation-runtime,defer,workflows/validation/validate-agents.js,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-changelog.cjs,legacy-validation-runtime,defer,workflows/validation/validate-changelog.cjs,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-coderabbit-yml.cjs,legacy-validation-runtime,defer,workflows/validation/validate-coderabbit-yml.cjs,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-coderabbit-yml.test.js,legacy-validation-runtime,defer,scripts/validation/validate-coderabbit-yml.test.js,no,,Keep validation tests/fixtures with legacy validation until the reset lands. +scripts/validation/validate-frontmatter.js,legacy-validation-runtime,defer,workflows/validation/validate-frontmatter.js,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-json.js,legacy-validation-runtime,defer,workflows/validation/validate-json.js,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-version.cjs,legacy-validation-runtime,defer,workflows/validation/validate-version.cjs,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +scripts/validation/validate-workflows.js,legacy-validation-runtime,defer,workflows/validation/validate-workflows.js,yes,,Legacy validator; replace with smaller non-mutating validation before moving. +.github/ISSUE_TEMPLATE/01-task.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/01-task.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/02-bug.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/02-bug.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/03-feature.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/03-feature.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/04-design.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/04-design.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/05-epic.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/05-epic.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/06-story.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/06-story.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/07-improvement.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/07-improvement.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/07-user-experience-feedback.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/07-user-experience-feedback.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/08-code-refactor.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/08-code-refactor.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/09-build-ci.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/09-build-ci.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/10-automation.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/10-automation.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/11-testing-coverage.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/11-testing-coverage.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/12-performance.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/12-performance.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/13-a11y.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/13-a11y.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/14-security.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/14-security.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/15-compatibility.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/15-compatibility.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/16-integration-issue.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/16-integration-issue.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/17-release.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/17-release.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/18-maintenance.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/18-maintenance.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/19-documentation.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/19-documentation.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/20-research.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/20-research.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/21-audit.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/21-audit.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/22-code-review.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/22-code-review.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/23-ai-ops.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/23-ai-ops.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/24-content-modelling.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/24-content-modelling.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/25-help.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/25-help.md,no,,GitHub-native/community-health content should remain in .github governance scope. +".github/ISSUE_TEMPLATE/Icon ",github-issue-template,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/ISSUE_TEMPLATE/README.md,github-issue-template,keep,.github/ISSUE_TEMPLATE/README.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/ISSUE_TEMPLATE/config.yml,github-issue-template,keep,.github/ISSUE_TEMPLATE/config.yml,no,,GitHub-native/community-health content should remain in .github governance scope. +".github/SAVED_REPLIES/Icon ",saved-reply,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/SAVED_REPLIES/README.md,saved-reply,keep,.github/SAVED_REPLIES/README.md,no,,GitHub-native/community-health content should remain in .github governance scope. +".github/SAVED_REPLIES/community/Icon ",saved-reply,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/SAVED_REPLIES/community/code-of-conduct.md,saved-reply,keep,.github/SAVED_REPLIES/community/code-of-conduct.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/community/contribution-thanks.md,saved-reply,keep,.github/SAVED_REPLIES/community/contribution-thanks.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/community/guidelines.md,saved-reply,keep,.github/SAVED_REPLIES/community/guidelines.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/community/legal.md,saved-reply,keep,.github/SAVED_REPLIES/community/legal.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/community/welcome.md,saved-reply,keep,.github/SAVED_REPLIES/community/welcome.md,no,,GitHub-native/community-health content should remain in .github governance scope. +".github/SAVED_REPLIES/issues/Icon ",saved-reply,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/SAVED_REPLIES/issues/a11y-acknowledge.md,saved-reply,keep,.github/SAVED_REPLIES/issues/a11y-acknowledge.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/area-routing.md,saved-reply,keep,.github/SAVED_REPLIES/issues/area-routing.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/blockers.md,saved-reply,keep,.github/SAVED_REPLIES/issues/blockers.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/bug-reports.md,saved-reply,keep,.github/SAVED_REPLIES/issues/bug-reports.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/documentation.md,saved-reply,keep,.github/SAVED_REPLIES/issues/documentation.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/duplicate.md,saved-reply,keep,.github/SAVED_REPLIES/issues/duplicate.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/duplicates.md,saved-reply,keep,.github/SAVED_REPLIES/issues/duplicates.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/epic-tracking.md,saved-reply,keep,.github/SAVED_REPLIES/issues/epic-tracking.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/feature-requests.md,saved-reply,keep,.github/SAVED_REPLIES/issues/feature-requests.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/good-first-issue.md,saved-reply,keep,.github/SAVED_REPLIES/issues/good-first-issue.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/inactive-issue.md,saved-reply,keep,.github/SAVED_REPLIES/issues/inactive-issue.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/label-clarification.md,saved-reply,keep,.github/SAVED_REPLIES/issues/label-clarification.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/meta-label-nudge.md,saved-reply,keep,.github/SAVED_REPLIES/issues/meta-label-nudge.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/missing-info.md,saved-reply,keep,.github/SAVED_REPLIES/issues/missing-info.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/more-info.md,saved-reply,keep,.github/SAVED_REPLIES/issues/more-info.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/needs-reproduction.md,saved-reply,keep,.github/SAVED_REPLIES/issues/needs-reproduction.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/research-completion.md,saved-reply,keep,.github/SAVED_REPLIES/issues/research-completion.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/security-acknowledge.md,saved-reply,keep,.github/SAVED_REPLIES/issues/security-acknowledge.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/stale-abandoned.md,saved-reply,keep,.github/SAVED_REPLIES/issues/stale-abandoned.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/support.md,saved-reply,keep,.github/SAVED_REPLIES/issues/support.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/triage.md,saved-reply,keep,.github/SAVED_REPLIES/issues/triage.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/issues/wontfix.md,saved-reply,keep,.github/SAVED_REPLIES/issues/wontfix.md,no,,GitHub-native/community-health content should remain in .github governance scope. +".github/SAVED_REPLIES/pull-requests/Icon ",saved-reply,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/SAVED_REPLIES/pull-requests/ai-assist.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/ai-assist.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/area-labeling.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/area-labeling.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/area-routing.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/area-routing.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/automated-dependency-update.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/automated-dependency-update.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/awaiting-author.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/awaiting-author.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/branch-naming.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/branch-naming.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/changelog-required.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/changelog-required.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/closing-inactive.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/closing-inactive.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/code-review.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/code-review.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/conflicts.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/conflicts.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/dependency-update.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/dependency-update.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/documentation-pr.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/documentation-pr.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/draft-pr.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/draft-pr.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/merge-discipline.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/merge-discipline.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/missing-labels.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/missing-labels.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/needs-qa.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/needs-qa.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/performance.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/performance.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/ready-for-review.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/ready-for-review.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/release-label-guidance.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/release-label-guidance.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/security.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/security.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/pull-requests/testing.md,saved-reply,keep,.github/SAVED_REPLIES/pull-requests/testing.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +".github/SAVED_REPLIES/technical/Icon ",saved-reply,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/SAVED_REPLIES/technical/api-integration.md,saved-reply,keep,.github/SAVED_REPLIES/technical/api-integration.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/code-style.md,saved-reply,keep,.github/SAVED_REPLIES/technical/code-style.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/configuration.md,saved-reply,keep,.github/SAVED_REPLIES/technical/configuration.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/dependencies.md,saved-reply,keep,.github/SAVED_REPLIES/technical/dependencies.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/dependency-update.md,saved-reply,keep,.github/SAVED_REPLIES/technical/dependency-update.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/environment-config.md,saved-reply,keep,.github/SAVED_REPLIES/technical/environment-config.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/environment.md,saved-reply,keep,.github/SAVED_REPLIES/technical/environment.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/missing-tests.md,saved-reply,keep,.github/SAVED_REPLIES/technical/missing-tests.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/performance.md,saved-reply,keep,.github/SAVED_REPLIES/technical/performance.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/technical/security.md,saved-reply,keep,.github/SAVED_REPLIES/technical/security.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +".github/SAVED_REPLIES/workflow/Icon ",saved-reply,delete,,no,,Remove zero-byte macOS metadata after link audit; not a portable asset. +.github/SAVED_REPLIES/workflow/automation.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/automation.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/branch-management.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/branch-management.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/branches.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/branches.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/changelog-versioning.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/changelog-versioning.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/cicd-failures.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/cicd-failures.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/dependency-update.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/dependency-update.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/deployment.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/deployment.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/draft-pr.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/draft-pr.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/environment-config.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/environment-config.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/labeling.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/labeling.md,yes,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/needs-rebase.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/needs-rebase.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/permissions-secrets.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/permissions-secrets.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/project-sync.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/project-sync.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/release-management.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/release-management.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/releases.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/releases.md,no,,GitHub-native/community-health content should remain in .github governance scope. +.github/SAVED_REPLIES/workflow/workflow-failure.md,saved-reply,keep,.github/SAVED_REPLIES/workflow/workflow-failure.md,no,,GitHub-native/community-health content should remain in .github governance scope. diff --git a/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-prd-2026-05-14.md b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-prd-2026-05-14.md new file mode 100644 index 000000000..8be2535a7 --- /dev/null +++ b/.github/projects/active/portable-ai-plugin-restructure/portable-ai-plugin-restructure-prd-2026-05-14.md @@ -0,0 +1,979 @@ +--- +title: "Portable LightSpeed AI Operations Plugin Restructure PRD" +description: "Product requirements document for restructuring the LightSpeed .github repo into a portable AI operations plugin while keeping .github scoped to repo governance." +version: "v0.1.0" +last_updated: "2026-05-14" +file_type: "project-prd" +maintainer: "LightSpeed Team" +authors: ["LightSpeed Team", "Codex"] +license: "GPL-3.0" +tags: + - "prd" + - "ai-ops" + - "plugin" + - "repo-restructure" + - "awesome-copilot" + - "governance" +domain: "governance" +stability: "draft" +references: + - path: "../../../instructions/file-organisation.instructions.md" + description: "Current file placement rules used for this PRD." + - path: "../../../custom-instructions.md" + description: "Current repo-level Copilot and agent instructions." + - path: "../../../agents/agent.md" + description: "Current agent index and implementation map." + - path: "../../../../package.json" + description: "Current validation, linting, and test command surface." +--- + +# Portable LightSpeed AI Operations Plugin Restructure PRD + +## 1. Executive Summary + +LightSpeed has already proven the value of a central `.github` repository as an +organisation control plane: community health files, templates, labels, +instructions, agents, automations, and release practices can be versioned once +and reused across many repositories. + +The next step is to split two concerns that currently live in the same place: + +1. The `.github` repository's own GitHub governance, CI, templates, and + repo-specific Copilot instructions. +2. Portable LightSpeed AI operations assets that should be installable into + many tools and project types. + +This PRD proposes a radical but phased restructure into an +awesome-copilot-inspired layout: + +```text +/.github +/.schemas +/.vscode +/agents +/cookbook +/docs +/hooks +/instructions +/plugins +/skills +/workflows +``` + +The end state is a portable AI operations repository that can publish one or +more installable plugins, while the root `.github` folder remains the canonical +home for this repository's own GitHub configuration and community-health +responsibilities. + +The JavaScript and schema layer should restart smaller after the restructure. +Existing tests and validators are useful as evidence, but the new system should +avoid porting the current complexity wholesale. Validation must be +non-mutating by default, dependency-light, and focused on structure, plugin +manifests, frontmatter, links, and JSON/YAML syntax. + +## 2. Background And Motivation + +LightSpeed has been using this repository to centralise: + +- organisation-wide community health files; +- GitHub issue, pull request, and saved reply templates; +- labels and governance conventions; +- Copilot instructions, prompts, agents, and AI operations documents; +- workflow and release automation; +- schema/frontmatter conventions for discoverable documentation. + +The previous workaround made the central AI assets available locally by +checking out `lightspeedwp/.github` into the staging environment and adding the +folder to the VS Code workspace. That approach worked, but it is not a clean +distribution model. It depends on local workspace configuration, exposes too +much repository implementation detail, and does not segment domain-specific +skills cleanly. + +The current `github/awesome-copilot` project now provides a better reference +model. It has evolved from a collection of agents, instructions, prompts, and +skills into a marketplace and plugin-oriented repository with MCP-aware tooling, +Copilot CLI installation, VS Code discovery, skills, hooks, workflows, and +plugin manifests. + +LightSpeed should use that pattern, but with a narrower first implementation: + +- keep `.github` important and focused; +- make portable assets first-class top-level content; +- ship one small installable plugin first; +- collect favourite skills in a clear backlog; +- reintroduce scripts and schemas only after the new layout proves itself. + +## 3. Evidence Reviewed + +### 3.1 Google Drive Blog And Talk Folder + +The Drive folder contains the blog and talk source material for the current +`.github` work. The folder inventory reviewed for this PRD included the +following files: + +| File | Evidence Status | Planning Relevance | +| --- | --- | --- | +| `.GitHub Community Health Repo` | Listed and included in prior audit synthesis | Establishes the central repo as the organisation-wide control plane. | +| `Part 1 - Unified .GitHub Community Health Repo` | Text reviewed directly | Defines the defaults-first `.github` strategy and `develop` to `main` rollout model. | +| `Part 2 - Community Health & Governance Docs` | Listed and included in prior audit synthesis | Supports the need to keep `.github` as the governance source of truth. | +| `Part 3 - Tools and CI` | Text reviewed directly | Supports local/CI parity, lint/test gates, and one-command validation. | +| `Part 4 - Templates & Saved Replies` | Listed and included in prior audit synthesis | Supports centralising issue, PR, discussion, and saved reply templates. | +| `Part 5 - AI Ops Files` | Text reviewed directly | Treats AI files as versioned operational assets, not editor-only preferences. | +| `Part 6 - Frontmatter & Schema` | Text reviewed directly | Identifies frontmatter as the API contract and warns about schema drift. | +| `Part 7 - Labeling Agent` | Text reviewed directly | Supports dry-run-first automation, canonical labels, and safe agent behaviour. | +| `Part 8 - Projects Agent` | Listed and included in prior audit synthesis | Supports project metadata, field sync, and issue/project governance automation. | +| `Part 9 - Branding Agent` | Listed and included in prior audit synthesis | Supports portable brand and documentation quality checks. | +| `Part 10 - Release Agent` | Text reviewed directly | Supports release gates, changelog/version checks, and hard aborts on unsafe state. | +| `Part 11 - Self-Maintaining GitHub Repo` | Text reviewed directly | Frames the long-term goal of a repo that maintains its own standards with human oversight. | +| `LightSpeed_GitHub` | Slide structure reviewed; image-only slides | Useful for WordCamp narrative framing, but not primary text evidence. | +| `The_GitHub_Control_Plane` | Listed | Supports the control-plane framing for the talk. | +| `The_Universal_GitHub_Node` | Listed | Supports the portable node/plugin framing for the talk. | + +Key synthesis from the Drive material: + +- The central `.github` repo is a strategic default layer, not a dumping + ground. +- Governance files, templates, saved replies, labels, workflows, and standards + should remain centralised. +- AI instructions, agents, prompts, and reusable skills should be indexed, + versioned, validated, and discoverable. +- Frontmatter is the contract that makes AI files portable and auditable. +- Automation must default to dry-run, fail safely, and expose a short rationale. +- The current repo has grown enough that a smaller second generation is safer + than extending the current JavaScript/schema stack indefinitely. + +### 3.2 Awesome Copilot Reference Audit + +The current `github/awesome-copilot` repository was reviewed at commit +`97cc3f24602b6431b82dbce2afec7a1f3611664f`, dated 2026-05-14. + +The top-level structure closely matches the requested LightSpeed target: + +```text +.github/ +.schemas/ +.vscode/ +agents/ +cookbook/ +docs/ +eng/ +hooks/ +instructions/ +plugins/ +skills/ +workflows/ +``` + +Important observed patterns: + +- The repository separates source collections from installable plugin bundles. +- Plugins live under `plugins//`. +- Each plugin uses `.github/plugin/plugin.json` inside the plugin folder. +- The root marketplace metadata lives at `.github/plugin/marketplace.json`. +- Skill folders are self-contained and use `SKILL.md` as the entrypoint. +- Contribution docs define naming, frontmatter, validation, and plugin rules. +- Plugin installation is framed around `copilot plugin install` and marketplace + registration. +- VS Code plugin discovery is integrated through Copilot plugin concepts. +- A `.vscode/mcp.json` file configures an MCP server command for agentic + workflows. +- The staged branch model publishes materialised plugin content to stable + distribution branches. + +Observed plugin manifest pattern: + +```json +{ + "name": "awesome-copilot", + "description": "Meta prompts that help you discover and generate curated GitHub Copilot agents, instructions, prompts, and skills.", + "version": "1.1.0", + "author": { + "name": "Awesome Copilot Community" + }, + "repository": "https://github.com/github/awesome-copilot", + "license": "MIT", + "keywords": [ + "github-copilot", + "discovery", + "meta", + "prompt-engineering", + "agents" + ], + "agents": [ + "./agents" + ], + "skills": [ + "./skills/suggest-awesome-github-copilot-agents", + "./skills/suggest-awesome-github-copilot-instructions", + "./skills/suggest-awesome-github-copilot-skills" + ] +} +``` + +Implication for LightSpeed: + +- Use the same folder vocabulary where it fits. +- Keep the first LightSpeed plugin smaller than awesome-copilot. +- Prefer top-level source collections plus one pilot plugin before adding a + full materialisation pipeline. +- Treat `.github/plugin/marketplace.json` as repo packaging metadata, not as + WordPress project content. +- Do not assume all Copilot concepts map perfectly to Codex, Claude Code, or + ChatGPT. Keep assets tool-agnostic first, then add adapters. + +### 3.3 Current LightSpeed Repo Audit + +The current repository is powerful but overloaded. The repo already has strong +foundations: + +- `validate:agents`; +- `validate:workflows`; +- `validate:json:schemas`; +- `validate:json:all`; +- `lint:all`; +- `test`; +- lint-staged and Husky pre-commit integration; +- comprehensive templates and saved replies; +- agent specs and JavaScript runner scripts; +- instruction, prompt, report, metric, and project folders. + +Current inventory highlights: + +| Area | Current State | PRD Interpretation | +| --- | --- | --- | +| `.github/agents` | 19 agent spec files | Migrate reusable specs to `/agents`; keep repo-specific specs in `.github`. | +| `.github/prompts` | 71 prompt files | Convert durable workflows into `/skills`; move examples to `/cookbook`; retire one-off prompts. | +| `.github/instructions` | 32 instruction files | Split portable instructions to `/instructions`; keep repo-local instructions in `.github`. | +| `scripts/agents` | 21 JavaScript agent runners | Treat as legacy runtime; rewrite only the useful runners into smaller hooks/workflows. | +| `.github/ISSUE_TEMPLATE` | 25 numbered templates plus config | Keep central community-health templates under `.github`. | +| `.github/PULL_REQUEST_TEMPLATE` | Default plus branch templates | Keep under `.github`; update references after restructure. | +| `.github/SAVED_REPLIES` | Saved reply collections | Keep under `.github` as organisation governance content. | +| `.github/schemas` | Schema files under `.github` | Move portable schemas to `/.schemas` after simplification. | +| `.github/workflows` | GitHub Actions workflows | Keep under `.github/workflows`; use top-level `/workflows` for portable agentic workflows. | + +Validation findings: + +- `npm run validate:agents` passes after dependencies are installed. +- `npm run validate:workflows` passes but emits 34 warnings around workflow + permissions, concurrency, caching, checkout depth, and unnamed run steps. +- `npm run validate:json:schemas` currently fails because + `.github/schemas/project-fields.schema.json` contains a JavaScript-style + comment in JSON at line 15. +- `npm run validate:json:schemas` also formats files as it runs, which makes a + command named `validate` unexpectedly mutating. +- `npm test` passes 41 suites and 181 tests, but coverage reports 0 percent and + some tests log side effects during import. +- `npm ci` reports 36 dependency vulnerabilities. + +Reference and drift findings: + +- Several docs still point to `.github/instructions/_index.instructions.md`, + which is missing. +- Some docs refer to `.github/automation/labels.yml`, but the current labels + file is `.github/labels.yml`. +- Some links use `docs/HUSKY-PRECOMMITS.md`, while the actual file uses an + underscore. +- Some docs refer to removed or stale `GEMINI.md`, `CLAUDE.md`, `chatmodes`, + and `collections` concepts. +- Several zero-byte macOS `Icon` metadata files exist in template and saved + reply folders. +- `.github/custom-instructions.md` still treats `.github` as the home for + reusable WordPress project AI files, which conflicts with the desired new + boundary. + +The core conclusion is that the current repo should not be reorganised by +moving everything at once. It needs an explicit migration map, a pilot plugin, +and a simplified validation layer that proves the new layout before the legacy +JavaScript stack is rewritten. + +## 4. Problem Statement + +The repository currently mixes four product surfaces: + +1. GitHub's special `.github` community-health and workflow behaviour. +2. LightSpeed organisation governance and template defaults. +3. Portable AI operations assets that should install into editors and agents. +4. WordPress product-specific instructions, agents, and workflows. + +This creates several problems: + +- Portable assets are trapped under `.github`, which makes them harder to + package and install. +- Repo-specific instructions are mixed with WordPress project instructions. +- Prompts, agents, instructions, and JavaScript runners have grown unevenly. +- Schema and frontmatter validation is valuable but currently brittle. +- Some validation commands mutate files or pass despite noisy side effects. +- Docs contain stale paths and legacy concepts. +- A local workspace checkout is a workaround, not a scalable distribution + model. + +## 5. Product Goals + +### 5.1 Primary Goals + +1. Create a portable repository structure that mirrors the proven + awesome-copilot vocabulary where appropriate. +2. Preserve `.github` as the canonical home for repo governance, community + health files, GitHub Actions, and repo-specific Copilot instructions. +3. Move reusable AI operations assets to top-level folders that can be packaged + into plugins. +4. Build a small first installable plugin before attempting a broad migration. +5. Separate general LightSpeed governance skills from WordPress block theme and + block plugin skills. +6. Replace the current JavaScript/schema complexity with smaller validation + scripts after the restructure. +7. Keep the repo useful for the WordCamp Europe talk and blog series by making + the architecture easy to explain. + +### 5.2 Secondary Goals + +1. Support VS Code and GitHub Copilot first. +2. Keep the asset model adaptable to Codex, Claude Code, ChatGPT, and future + MCP/plugin surfaces. +3. Keep all AI assets discoverable through indexes, frontmatter, and plugin + manifests. +4. Make it easy to collect favourite skills without forcing every idea into + production immediately. +5. Document every migration decision so the restructure can be reviewed in + phases. + +## 6. Non-Goals + +This project will not: + +- rewrite every JavaScript agent runner in the first phase; +- preserve every existing prompt as a top-level file; +- publish a public marketplace entry before private installation works; +- move WordPress product-specific guidance into the repo-level `.github` + folder; +- keep deprecated chatmode or collection concepts as first-class v1 surfaces; +- add a heavy build system before the first plugin proves the target model; +- claim full cross-tool compatibility before each tool adapter is tested. + +## 7. Target Users + +| User | Need | Success Signal | +| --- | --- | --- | +| LightSpeed engineers | Install shared AI operations assets into daily tools | One command or documented flow installs a focused plugin. | +| Repo maintainers | Keep organisation standards central and reviewable | `.github` remains clear, stable, and auditable. | +| WordPress theme developers | Access block theme skills without unrelated plugin guidance | Theme-specific skills live in a dedicated plugin bundle. | +| WordPress plugin developers | Access block plugin skills without theme assumptions | Plugin-specific skills live in a dedicated plugin bundle. | +| Release maintainers | Run safer release checks and changelog routines | Release skills and workflows are dry-run capable and documented. | +| Talk/blog audience | Understand the architecture and migration story | The repo demonstrates a practical control-plane-to-plugin evolution. | + +## 8. Target Folder Structure And Ownership + +### 8.1 Root Structure + +```text +/.github +/.schemas +/.vscode +/agents +/cookbook +/docs +/hooks +/instructions +/plugins +/skills +/workflows +``` + +### 8.2 Folder Responsibilities + +| Folder | Responsibility | Notes | +| --- | --- | --- | +| `/.github` | GitHub-native repo configuration, community health, workflow automation, repo-specific Copilot files, marketplace metadata | This remains important, but it stops being the default home for portable WordPress AI assets. | +| `/.schemas` | Portable JSON/YAML/frontmatter schemas for AI assets and plugin metadata | Start small; move only schemas that are actively validated. | +| `/.vscode` | Workspace-local VS Code and MCP configuration for contributors | May include MCP server config, tasks, and recommendations. | +| `/agents` | Portable agent specs | Specs only in v1. Runtime code is migrated separately. | +| `/cookbook` | Recipes, examples, playbooks, and implementation guides | Durable prompt-like content that is better as a recipe than a skill. | +| `/docs` | Permanent documentation for humans | Includes architecture, install docs, migration reports, and talk/blog support material. | +| `/hooks` | Portable hooks and guardrails | Tool-neutral where possible; tool adapters can live below subfolders. | +| `/instructions` | Portable instruction files | Split by domain and avoid `.github`-specific assumptions. | +| `/plugins` | Installable plugin bundles | Each plugin has its own README and `.github/plugin/plugin.json`. | +| `/skills` | Self-contained skill folders | Each skill uses `SKILL.md` and can include assets, scripts, templates, and examples. | +| `/workflows` | Portable agentic workflows | GitHub Actions stay in `.github/workflows`. | + +### 8.3 `.github` Boundary + +The `.github` folder should contain: + +- GitHub Actions workflows for this repo; +- issue templates, pull request templates, saved replies, and discussion + templates; +- labels, funding, contributing, security, code of conduct, and support files; +- repo-specific Copilot instructions for maintaining this repo; +- marketplace metadata required by plugin distribution; +- active project planning and reports that belong to the `.github` repo itself. + +The `.github` folder should not contain: + +- general WordPress project instructions; +- block theme skills; +- block plugin skills; +- portable AI skill collections; +- generic reusable agents that are intended to install into other repos; +- legacy prompts that have no repo-specific purpose. + +## 9. Proposed Plugin Product Model + +### 9.1 Plugin Family + +The repository should eventually publish a small family of plugins: + +| Plugin ID | Purpose | First Candidate Assets | +| --- | --- | --- | +| `lightspeed-github-ops` | Community health, templates, labels, project/release governance | PR review, label governance, release prep, frontmatter audit. | +| `lightspeed-ai-ops-core` | General LightSpeed AI operations skills and agents | Instruction authoring, skill discovery, docs index checks. | +| `lightspeed-wordpress-block-theme` | Block theme development guidance | `theme.json`, block patterns, performance, accessibility. | +| `lightspeed-wordpress-block-plugin` | Block plugin development guidance | block registration, PHP/JS boundaries, tests, security. | +| `lightspeed-talk-blog-kit` | Talk and blog production workflows | Source synthesis, outline building, evidence mapping. | + +Only `lightspeed-github-ops` should be implemented first. The others are +backlog groups until the structure and validation model are stable. + +### 9.2 First Plugin Scope + +The first plugin should be small enough to ship and test quickly: + +```text +/plugins/lightspeed-github-ops/ + /.github/plugin/plugin.json + /README.md + /agents/ + /skills/ +``` + +Recommended v1 contents: + +- one repo governance agent; +- one frontmatter/schema audit skill; +- one PR/review preparation skill; +- one label/template governance skill. + +This avoids creating a large marketplace package before the migration rules are +known. + +### 9.3 Plugin Manifest Defaults + +Each plugin manifest should use a conservative subset of the awesome-copilot +pattern: + +```json +{ + "name": "lightspeed-github-ops", + "description": "LightSpeed GitHub governance, review, release, and AI operations skills.", + "version": "0.1.0", + "author": { + "name": "LightSpeed Team" + }, + "repository": "https://github.com/lightspeedwp/.github", + "license": "GPL-3.0", + "keywords": [ + "github", + "governance", + "ai-ops", + "wordpress" + ], + "agents": [ + "./agents" + ], + "skills": [ + "./skills/lightspeed-frontmatter-audit", + "./skills/lightspeed-pr-review", + "./skills/lightspeed-label-governance" + ] +} +``` + +Instruction files should remain top-level source files in v1. Where an +installable plugin needs instruction behaviour, create a skill that applies or +generates the relevant instructions for the target tool. This avoids inventing +a plugin `instructions` field before the target toolchain supports it +consistently. + +## 10. Content Migration Strategy + +### 10.1 Migration Rules + +Each current asset should be routed by intent: + +| Current Asset Type | New Home | Rule | +| --- | --- | --- | +| Repo GitHub workflow | `.github/workflows` | Keep in place. | +| Repo community health file | `.github` | Keep in place. | +| Issue, PR, discussion template | `.github` | Keep in place. | +| Saved reply | `.github/SAVED_REPLIES` | Keep in place unless converted into a cookbook example. | +| Portable agent spec | `/agents` | Move after frontmatter and references are updated. | +| Repo-only agent spec | `.github/agents` | Keep only if it maintains this repo. | +| Agent JavaScript runner | Legacy `scripts/agents` until rewritten | Do not move blindly. Rewrite as `/hooks`, `/workflows`, or small scripts inside skills only when needed. | +| Portable instruction | `/instructions` | Split by domain and remove `.github` assumptions. | +| Repo-specific instruction | `.github/instructions` or `.github/copilot-instructions.md` | Keep scoped to maintaining this repo. | +| Durable prompt workflow | `/skills` | Convert into a self-contained skill when it has repeatable steps. | +| Example prompt or recipe | `/cookbook` | Move when it teaches a pattern but is not an installable skill. | +| Obsolete prompt | Archive or delete after review | Do not migrate by default. | +| Portable schema | `/.schemas` | Keep only schemas used by new validators. | +| Repo audit/report | `.github/reports` or `.github/projects` | Keep under repo governance. | + +### 10.2 Prompt Migration Decision + +The requested target structure does not include `/prompts`. + +Therefore: + +- prompt files that encode repeatable work should become skills; +- prompt files that teach a reusable example should become cookbook recipes; +- prompt files that are only historical should be archived or deleted; +- the new plugin system should not recreate the old prompt folder by default. + +This is a deliberate simplification, not a loss of capability. + +### 10.3 Legacy JavaScript Decision + +The existing JavaScript automation is useful evidence, but it should be treated +as a legacy runtime until each script has a new purpose. + +Decision: + +- keep `scripts/` temporarily during migration; +- do not add `scripts/` to the desired permanent structure; +- rewrite only the highest-value agents into small skills, hooks, or workflows; +- separate validation commands from fix/format commands; +- remove large dependencies that are no longer needed after the reset. + +## 11. Functional Requirements + +### 11.1 Repository Structure + +| ID | Requirement | Acceptance Criteria | +| --- | --- | --- | +| FR-001 | Create the requested top-level folder structure. | All target folders exist with README or index files explaining ownership. | +| FR-002 | Keep `.github` focused on repo governance. | `.github/custom-instructions.md` no longer claims to be the home for reusable WordPress project AI assets. | +| FR-003 | Add a migration map. | Every existing agent, instruction, prompt, schema, and runner has a target state: keep, move, convert, archive, or delete. | +| FR-004 | Preserve community-health behaviour. | Issue templates, PR templates, saved replies, labels, and GitHub Actions still work after the restructure. | +| FR-005 | Create a portable source model. | `/agents`, `/instructions`, `/skills`, `/hooks`, `/workflows`, and `/cookbook` contain portable assets only. | + +### 11.2 Plugin Distribution + +| ID | Requirement | Acceptance Criteria | +| --- | --- | --- | +| FR-101 | Create the `lightspeed-github-ops` pilot plugin. | Plugin folder includes README, plugin manifest, at least one agent, and at least two skills. | +| FR-102 | Add root marketplace metadata if required by the installer. | `.github/plugin/marketplace.json` exists and points to the pilot plugin. | +| FR-103 | Document local installation. | `/docs/plugin-installation.md` explains install and update flows for VS Code and Copilot CLI. | +| FR-104 | Keep plugin content scoped. | Pilot plugin contains GitHub governance assets, not block theme or block plugin guidance. | +| FR-105 | Define future plugin groups. | Backlog docs describe WordPress theme, WordPress plugin, release, and talk/blog plugins. | + +### 11.3 Skills And Agents + +| ID | Requirement | Acceptance Criteria | +| --- | --- | --- | +| FR-201 | Convert selected durable prompts into skills. | Each selected skill has `/skills//SKILL.md`. | +| FR-202 | Keep skill folders self-contained. | Skill assets, templates, examples, and scripts live inside that skill folder. | +| FR-203 | Use consistent skill frontmatter. | Skill name matches folder, description is clear, and metadata validates. | +| FR-204 | Move reusable agent specs to `/agents`. | Agent specs no longer depend on `.github`-relative paths unless they are repo-only. | +| FR-205 | Keep repo maintenance agents repo-scoped. | Repo-only agents stay under `.github` until rewritten for portability. | + +### 11.4 Validation And Quality Gates + +| ID | Requirement | Acceptance Criteria | +| --- | --- | --- | +| FR-301 | Split validation from fixing. | Any `validate:*` command exits without changing files. | +| FR-302 | Add `validate:structure`. | Fails when target folders, README/index files, or required plugin metadata are missing. | +| FR-303 | Add `validate:plugins`. | Validates plugin manifests and referenced agents/skills. | +| FR-304 | Add `validate:skills`. | Validates skill folder shape, `SKILL.md`, frontmatter, and asset references. | +| FR-305 | Add `validate:frontmatter`. | Validates only active source folders and reports stale fields. | +| FR-306 | Add `validate:links`. | Detects broken local links and stale paths after migration. | +| FR-307 | Fix JSON schema syntax. | `.github/schemas/project-fields.schema.json` no longer contains JSON comments or other invalid syntax. | +| FR-308 | Keep tests meaningful. | Coverage either reports meaningful values or is deliberately disabled with a documented rationale. | + +### 11.5 Documentation + +| ID | Requirement | Acceptance Criteria | +| --- | --- | --- | +| FR-401 | Create an architecture document. | `/docs/architecture.md` explains repo governance, portable source folders, plugin bundles, and installers. | +| FR-402 | Create a migration guide. | `/docs/migration-guide.md` maps old paths to new paths. | +| FR-403 | Create a plugin authoring guide. | `/docs/plugin-authoring.md` explains adding agents, skills, hooks, and plugin manifests. | +| FR-404 | Create a skills backlog. | `/skills/README.md` or `/docs/skills-backlog.md` lists favourite skills and their status. | +| FR-405 | Support the talk/blog narrative. | `/docs/talk-notes/` or `/cookbook/` includes a concise story arc from `.github` control plane to installable plugin. | + +## 12. Non-Functional Requirements + +| Area | Requirement | +| --- | --- | +| Language | Use UK English across docs and AI-facing instructions. | +| Security | Never include secrets, customer data, or production-only assumptions in portable assets. | +| Privacy | Treat plugin content as redistributable by default unless marked internal. | +| Maintainability | Prefer small, modular files and simple schemas over broad meta-frameworks. | +| Performance | Avoid heavy dependency installs for simple validation. | +| Accessibility | Preserve accessibility guidance in WordPress and review skills. | +| Portability | Keep core skill and instruction content tool-neutral; isolate tool adapters. | +| Auditability | Every moved or converted file should have a migration decision recorded. | +| Safety | Automation must support dry-run mode before write mode. | + +## 13. Architecture Decisions + +### AD-001: Keep `.github` As Governance, Not Product Skill Storage + +Decision: + +`.github` remains central, but its scope narrows to GitHub-native repo +configuration and this repository's own AI maintenance instructions. + +Rationale: + +This preserves GitHub's special inheritance model while removing ambiguity +about where portable AI assets belong. + +### AD-002: Use Top-Level Portable Source Folders + +Decision: + +Use `/agents`, `/instructions`, `/skills`, `/hooks`, `/workflows`, and +`/cookbook` as source folders. + +Rationale: + +The structure matches current awesome-copilot conventions and makes the repo +legible to humans and installers. + +### AD-003: Pilot One Plugin Before Building A Materialisation Pipeline + +Decision: + +Implement `lightspeed-github-ops` first. Do not build a large publishing system +until local install and review are proven. + +Rationale: + +The current repo is already complex. A pilot plugin creates feedback without +locking the team into a premature build architecture. + +### AD-004: Convert Prompts Into Skills Or Cookbook Recipes + +Decision: + +Do not create a new top-level `/prompts` folder in v1. + +Rationale: + +The requested target structure excludes prompts, and skills are a better unit +for repeatable workflows with instructions, assets, scripts, and examples. + +### AD-005: Restart Validation Smaller + +Decision: + +Build a minimal validation suite after the restructure instead of porting the +current JavaScript/schema layer wholesale. + +Rationale: + +The current validators are valuable, but they have drift, side effects, and a +large dependency surface. The second generation should be smaller and easier to +trust. + +### AD-006: Keep GitHub Actions Separate From Agentic Workflows + +Decision: + +`.github/workflows` remains GitHub Actions. Top-level `/workflows` stores +portable agentic workflows and reusable AI runbooks. + +Rationale: + +This prevents naming confusion while preserving the requested folder structure. + +## 14. Proposed Phased Delivery Plan + +### Phase 0: Freeze, Baseline, And Inventory + +Purpose: + +Capture the current state before moving files. + +Tasks: + +- Record current branch, commit, and validation results. +- Generate an inventory of agents, instructions, prompts, schemas, workflows, + templates, saved replies, and scripts. +- Record all known stale links and broken references. +- Document dependency audit results. +- Create a migration decision table for every current AI asset. + +Exit criteria: + +- The team can answer where every current asset will go before files move. + +### Phase 1: Create Target Skeleton + +Purpose: + +Introduce the new architecture without breaking existing behaviour. + +Tasks: + +- Create the requested top-level folders. +- Add README/index files that define each folder's ownership. +- Add `/docs/architecture.md`. +- Add `/docs/migration-guide.md`. +- Add `/skills/README.md` with a favourite skills backlog. +- Add `/plugins/README.md` with plugin family definitions. +- Update `.github/custom-instructions.md` to explain the new boundary. + +Exit criteria: + +- The repo has the target shape, but existing production behaviour remains + intact. + +### Phase 2: Migrate Portable Instructions And Agent Specs + +Purpose: + +Move low-risk text assets into the portable layout. + +Tasks: + +- Move generic instructions to `/instructions`. +- Keep repo-only instructions inside `.github`. +- Move reusable agent specs to `/agents`. +- Keep repo maintenance agents under `.github/agents` until rewritten. +- Update all indexes and local links. +- Run a link audit. + +Exit criteria: + +- The new source folders contain meaningful portable assets. +- `.github` no longer presents WordPress project AI guidance as repo-level + instruction. + +### Phase 3: Convert Prompts Into Skills And Cookbook Recipes + +Purpose: + +Simplify the prompt surface and create installable skills. + +Tasks: + +- Classify every `.github/prompts/*.prompt.md` file. +- Convert repeatable workflows into `/skills//SKILL.md`. +- Move examples and teaching material to `/cookbook`. +- Archive or delete obsolete prompts after review. +- Create the first `lightspeed-frontmatter-audit` skill. +- Create the first `lightspeed-pr-review` skill. +- Create the first `lightspeed-label-governance` skill. + +Exit criteria: + +- The pilot plugin has at least two working skills. +- The old prompt folder has a documented migration status. + +### Phase 4: Build The Pilot Plugin + +Purpose: + +Ship the smallest useful installable bundle. + +Tasks: + +- Create `/plugins/lightspeed-github-ops`. +- Add `.github/plugin/plugin.json`. +- Add plugin README. +- Include selected agent and skill content. +- Add or update root `.github/plugin/marketplace.json` if required by the + installer. +- Test local install in VS Code and Copilot CLI. +- Document installation and update steps. + +Exit criteria: + +- A contributor can install the pilot plugin and see the expected assets. + +### Phase 5: Restart Validation And Schemas + +Purpose: + +Replace brittle legacy validation with a smaller trusted set. + +Tasks: + +- Fix invalid JSON schema syntax. +- Create non-mutating validation commands. +- Add separate `fix:*` or `format:*` commands for auto-formatting. +- Validate plugin manifests. +- Validate skill folders. +- Validate frontmatter for active source folders. +- Validate local links and path references. +- Reduce unused dependencies. +- Decide whether coverage should be fixed or intentionally disabled. + +Exit criteria: + +- `npm run validate:all` is non-mutating and reliable. +- Dependency count is materially lower or explicitly justified. + +### Phase 6: Expand Plugin Family + +Purpose: + +Add domain-specific bundles only after the pilot is stable. + +Tasks: + +- Create the WordPress block theme plugin backlog. +- Create the WordPress block plugin plugin backlog. +- Extract release operations skills. +- Extract talk/blog synthesis workflows if useful. +- Add compatibility notes for Codex, Claude Code, ChatGPT, and other agent + tools. + +Exit criteria: + +- New plugins follow the same tested authoring and validation model. + +## 15. Favourite Skills Backlog + +| Skill ID | Plugin Candidate | Priority | Description | +| --- | --- | --- | --- | +| `lightspeed-frontmatter-audit` | `lightspeed-github-ops` | P0 | Audit AI files for frontmatter, schema drift, stale references, and missing indexes. | +| `lightspeed-pr-review` | `lightspeed-github-ops` | P0 | Prepare or review PRs against LightSpeed standards, with security, accessibility, and performance checks. | +| `lightspeed-label-governance` | `lightspeed-github-ops` | P0 | Review labels, issue templates, saved replies, and triage conventions. | +| `lightspeed-release-prep` | `lightspeed-github-ops` | P1 | Check changelog, version sync, tests, and release readiness. | +| `lightspeed-docs-indexer` | `lightspeed-ai-ops-core` | P1 | Keep README, docs indexes, and instruction indexes current. | +| `lightspeed-skill-author` | `lightspeed-ai-ops-core` | P1 | Create new skills using LightSpeed naming, metadata, and evidence conventions. | +| `lightspeed-block-theme-review` | `lightspeed-wordpress-block-theme` | P1 | Review `theme.json`, patterns, templates, accessibility, and performance. | +| `lightspeed-block-plugin-review` | `lightspeed-wordpress-block-plugin` | P1 | Review block plugin structure, PHP/JS boundaries, build assets, tests, and security. | +| `lightspeed-ai-asset-migration` | `lightspeed-ai-ops-core` | P2 | Classify legacy prompts, agents, and instructions into the new layout. | +| `lightspeed-talk-blog-synthesis` | `lightspeed-talk-blog-kit` | P2 | Turn repo evidence and Drive notes into talk outlines and blog drafts. | + +## 16. Validation And Test Plan + +### 16.1 Current Baseline + +| Command | Current Result | PRD Action | +| --- | --- | --- | +| `npm run validate:agents` | Passes after `npm ci`; 13 valid agent files and 6 skipped | Preserve value, then retarget to `/agents` plus repo-scoped `.github/agents`. | +| `npm run validate:workflows` | Passes with 34 warnings | Keep, but address workflow permission/concurrency/cache warnings. | +| `npm run validate:json:schemas` | Fails on invalid JSON and mutates files | Split validate from formatting and fix invalid schema syntax. | +| `npm test` | Passes 41 suites and 181 tests | Fix zero coverage reporting and noisy side effects. | +| `npm ci` | Installs dependencies but reports 36 vulnerabilities | Reduce dependency footprint during JS reset. | + +### 16.2 Required New Commands + +| Command | Purpose | +| --- | --- | +| `npm run validate:structure` | Confirm required folders, indexes, plugin metadata, and ownership docs exist. | +| `npm run validate:plugins` | Validate plugin manifests and referenced files. | +| `npm run validate:skills` | Validate skill folder shape, `SKILL.md`, metadata, and asset references. | +| `npm run validate:frontmatter` | Validate active AI files against the simplified schema set. | +| `npm run validate:links` | Check local links and stale path references. | +| `npm run format:docs` | Apply formatting explicitly, separate from validation. | +| `npm run fix:schemas` | Apply safe schema or JSON formatting explicitly, separate from validation. | + +### 16.3 Quality Gate Rules + +- Every validation command must be non-mutating. +- Every fixer command must advertise that it writes files. +- CI must fail on invalid plugin manifests. +- CI must fail on broken local links in active source folders. +- CI must warn, but not immediately fail, on archived legacy folders during the + migration window. +- Release checks must fail if plugin manifests reference missing agents or + skills. + +## 17. Risk Register + +| Risk | Impact | Mitigation | +| --- | --- | --- | +| Big-bang moves break references | High | Use migration table and link validation before deleting old paths. | +| `.github` loses community-health behaviour | High | Keep GitHub-native files in place and test inheritance assumptions. | +| Plugin duplication creates drift | Medium | Start with one pilot; add materialisation only after source model stabilises. | +| Schema complexity returns | Medium | Keep v1 schemas small and delete unused fields. | +| Tool ecosystem changes again | Medium | Follow awesome-copilot patterns but keep LightSpeed assets tool-neutral. | +| Legacy JavaScript side effects persist | Medium | Quarantine old runners and rewrite only high-value logic. | +| WordPress guidance leaks into repo-level instructions | Medium | Enforce `.github` boundary and split domain plugins. | +| Dependency vulnerabilities remain hidden | Medium | Track `npm audit` baseline and prune dependencies during JS reset. | +| Talk/blog material diverges from implementation | Low | Keep `/docs` and `/cookbook` tied to actual repo evidence. | + +## 18. Open Implementation Decisions + +These decisions should be resolved before Phase 4 starts: + +| Decision | Recommended Default | +| --- | --- | +| Public vs private first marketplace | Private first, public later. | +| Manual plugin materialisation vs build script | Manual for pilot, small build script only after repeated duplication appears. | +| Keep or remove legacy prompts after conversion | Archive first, delete after one release cycle. | +| Coverage target for the simplified JS layer | Start with meaningful coverage for validators only. | +| Codex and Claude Code adapter format | Document compatibility notes after Copilot pilot works. | +| Root package name | Rename only after the new structure is merged and install flow is tested. | + +## 19. Acceptance Criteria For The Overall Restructure + +The restructure is complete when: + +1. The requested top-level folders exist and have clear ownership docs. +2. `.github` is limited to repo governance, GitHub-native files, and + repo-specific AI maintenance instructions. +3. Portable AI assets live in top-level source folders. +4. The first plugin installs locally and exposes the expected agent and skills. +5. WordPress block theme and block plugin assets are segmented into their own + planned plugin groups. +6. Every migrated file has a recorded source and target. +7. Stale links to old `.github` paths are fixed or intentionally archived. +8. `validate:*` commands are non-mutating. +9. JSON/YAML/frontmatter validation passes on active source folders. +10. Tests pass without misleading coverage or import-time side effects. +11. The documentation explains the architecture well enough to support the + WordCamp Europe talk and blog series. + +## 20. Immediate Next Actions + +Recommended next implementation sequence: + +1. Add the target folder skeleton and folder READMEs. +2. Add `/docs/architecture.md` and `/docs/migration-guide.md`. +3. Rewrite `.github/custom-instructions.md` around the new `.github` boundary. +4. Generate the full migration table for agents, instructions, prompts, + schemas, and runner scripts. +5. Create `/plugins/lightspeed-github-ops` as the pilot plugin. +6. Convert three small pilot skills: + `lightspeed-frontmatter-audit`, `lightspeed-pr-review`, and + `lightspeed-label-governance`. +7. Fix `.github/schemas/project-fields.schema.json`. +8. Split validation commands from formatting commands. +9. Run local install tests for the pilot plugin. +10. Use the pilot results to decide whether to build materialisation tooling. + +## 21. Appendix: Stale Path Cleanup Candidates + +Known cleanup candidates from the audit: + +| Stale Or Risky Reference | Current Issue | Recommended Fix | +| --- | --- | --- | +| `.github/instructions/_index.instructions.md` | Referenced but missing | Create a new index or update links to the actual index. | +| `.github/automation/labels.yml` | Folder not present | Update to `.github/labels.yml` or recreate automation path intentionally. | +| `docs/HUSKY-PRECOMMITS.md` | Path spelling mismatch | Update references to `docs/HUSKY_PRECOMMITS.md` or rename consistently. | +| `GEMINI.md` and `CLAUDE.md` | Referenced as existing files but absent | Remove, recreate, or replace with tool adapter docs. | +| `chatmodes` and `collections` | Referenced as current concepts but absent | Archive references or map to skills/cookbook. | +| `.github/prompts` as permanent source | Not in requested target structure | Convert prompts to skills/cookbook/archive. | +| `validate:json:schemas` | Mutates files and fails invalid JSON | Split validate and format; fix schema syntax. | +| Zero-byte `Icon` files | macOS metadata in tracked folders | Remove unless intentionally required. | + +## 22. Appendix: Talk And Blog Narrative + +This restructure gives the WordCamp Europe talk a clear story arc: + +1. Start with `.github` as the organisation control plane. +2. Show how community health, templates, labels, and workflows become shared + defaults. +3. Explain how AI operations files joined that control plane. +4. Acknowledge the scaling problem: useful assets became trapped in repo + internals. +5. Introduce awesome-copilot as the reference pattern for plugins, skills, + hooks, workflows, and MCP-aware discovery. +6. Show the LightSpeed split: `.github` for governance, top-level folders for + portable AI assets. +7. Demonstrate the pilot plugin as the practical next step. +8. End with the larger vision: composable organisation skills that can travel + across editors, agents, and project types. diff --git a/.schemas/.gitkeep b/.schemas/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/agents/.gitkeep b/agents/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/cookbook/.gitkeep b/cookbook/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/hooks/.gitkeep b/hooks/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/instructions/.gitkeep b/instructions/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/plugins/.gitkeep b/plugins/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/skills/.gitkeep b/skills/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/workflows/.gitkeep b/workflows/.gitkeep new file mode 100644 index 000000000..e69de29bb