aiox-core 5.0.7 → 5.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/.aiox-core/cli/commands/pro/buyer.js +379 -0
  2. package/.aiox-core/cli/commands/pro/index.js +191 -52
  3. package/.aiox-core/cli/commands/validate/index.js +2 -0
  4. package/.aiox-core/core/code-intel/helpers/dev-helper.js +1 -1
  5. package/.aiox-core/core/code-intel/helpers/devops-helper.js +0 -1
  6. package/.aiox-core/core/code-intel/helpers/planning-helper.js +1 -1
  7. package/.aiox-core/core/code-intel/helpers/qa-helper.js +2 -2
  8. package/.aiox-core/core/config/schemas/framework-config.schema.json +1 -0
  9. package/.aiox-core/core/config/template-overrides.js +1 -1
  10. package/.aiox-core/core/doctor/checks/ide-sync.js +81 -25
  11. package/.aiox-core/core/doctor/checks/rules-files.js +0 -1
  12. package/.aiox-core/core/doctor/checks/skills-count.js +83 -15
  13. package/.aiox-core/core/graph-dashboard/cli.js +1 -2
  14. package/.aiox-core/core/graph-dashboard/data-sources/code-intel-source.js +1 -1
  15. package/.aiox-core/core/ids/layer-classifier.js +1 -1
  16. package/.aiox-core/core/pro/pro-updater.js +578 -0
  17. package/.aiox-core/core/synapse/context/context-tracker.js +107 -9
  18. package/.aiox-core/core/synapse/layers/layer-processor.js +1 -1
  19. package/.aiox-core/core-config.yaml +15 -1
  20. package/.aiox-core/data/capability-detection.js +15 -15
  21. package/.aiox-core/data/entity-registry.yaml +18 -2
  22. package/.aiox-core/data/registry-update-log.jsonl +5 -0
  23. package/.aiox-core/data/tok3-token-comparison.js +0 -4
  24. package/.aiox-core/data/tool-search-validation.js +1 -1
  25. package/.aiox-core/development/agents/aiox-master.md +44 -6
  26. package/.aiox-core/development/agents/data-engineer.md +4 -4
  27. package/.aiox-core/development/agents/devops.md +52 -2
  28. package/.aiox-core/development/agents/po.md +1 -1
  29. package/.aiox-core/development/agents/qa.md +5 -11
  30. package/.aiox-core/development/agents/sm.md +3 -3
  31. package/.aiox-core/development/agents/ux-design-expert.md +1 -1
  32. package/.aiox-core/development/scripts/unified-activation-pipeline.js +29 -3
  33. package/.aiox-core/development/tasks/dev-develop-story.md +46 -7
  34. package/.aiox-core/development/tasks/devops-pro-access-grant.md +93 -0
  35. package/.aiox-core/development/tasks/devops-pro-activate.md +42 -0
  36. package/.aiox-core/development/tasks/devops-pro-check-access.md +34 -0
  37. package/.aiox-core/development/tasks/devops-pro-request-reset.md +34 -0
  38. package/.aiox-core/development/tasks/devops-pro-resend-verification.md +32 -0
  39. package/.aiox-core/development/tasks/devops-pro-reset-password.md +36 -0
  40. package/.aiox-core/development/tasks/devops-pro-validate-login.md +36 -0
  41. package/.aiox-core/development/tasks/devops-pro-verify-status.md +33 -0
  42. package/.aiox-core/development/tasks/qa-gate.md +54 -4
  43. package/.aiox-core/development/tasks/validate-next-story.md +39 -2
  44. package/.aiox-core/framework-config.yaml +1 -0
  45. package/.aiox-core/infrastructure/scripts/codex-skills-sync/README.md +69 -0
  46. package/.aiox-core/infrastructure/scripts/codex-skills-sync/bootstrap.js +727 -0
  47. package/.aiox-core/infrastructure/scripts/codex-skills-sync/index.js +10 -0
  48. package/.aiox-core/infrastructure/scripts/codex-skills-sync/validate.js +65 -4
  49. package/.aiox-core/infrastructure/scripts/generate-settings-json.js +29 -4
  50. package/.aiox-core/infrastructure/scripts/ide-sync/agent-parser.js +4 -0
  51. package/.aiox-core/infrastructure/scripts/ide-sync/index.js +67 -7
  52. package/.aiox-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +145 -3
  53. package/.aiox-core/infrastructure/scripts/repair-agent-references.js +263 -0
  54. package/.aiox-core/infrastructure/scripts/validate-claude-integration.js +60 -8
  55. package/.aiox-core/infrastructure/scripts/validate-paths.js +13 -0
  56. package/.aiox-core/install-manifest.yaml +134 -82
  57. package/.aiox-core/utils/filters/index.js +2 -1
  58. package/.claude/commands/AIOX/agents/aiox-master.md +21 -0
  59. package/.claude/commands/AIOX/agents/analyst.md +21 -0
  60. package/.claude/commands/AIOX/agents/architect.md +21 -0
  61. package/.claude/commands/AIOX/agents/data-engineer.md +21 -0
  62. package/.claude/commands/AIOX/agents/dev.md +21 -0
  63. package/.claude/commands/AIOX/agents/devops.md +21 -0
  64. package/.claude/commands/AIOX/agents/pm.md +21 -0
  65. package/.claude/commands/AIOX/agents/po.md +21 -0
  66. package/.claude/commands/AIOX/agents/qa.md +21 -0
  67. package/.claude/commands/AIOX/agents/sm.md +21 -0
  68. package/.claude/commands/AIOX/agents/squad-creator.md +21 -0
  69. package/.claude/commands/AIOX/agents/ux-design-expert.md +21 -0
  70. package/.claude/commands/AIOX/scripts/agent-config-loader.js +624 -0
  71. package/.claude/commands/AIOX/scripts/generate-greeting.js +160 -0
  72. package/.claude/commands/AIOX/scripts/greeting-builder.js +866 -0
  73. package/.claude/commands/AIOX/scripts/session-context-loader.js +286 -0
  74. package/.claude/commands/AIOX/stories/story-6.1.4.md +1404 -0
  75. package/.claude/commands/cohort-squad/agents/cohort-manager.md +156 -0
  76. package/.claude/commands/design-system/agents/brad-frost.md +1097 -0
  77. package/.claude/commands/design-system/agents/dan-mall.md +857 -0
  78. package/.claude/commands/design-system/agents/dave-malouf.md +2272 -0
  79. package/.claude/commands/design-system/agents/design-chief.md +102 -0
  80. package/.claude/commands/design-system/agents/nano-banana-generator.md +162 -0
  81. package/.claude/commands/greet.md +101 -0
  82. package/.claude/commands/synapse/manager.md +75 -0
  83. package/.claude/commands/synapse/tasks/add-rule.md +94 -0
  84. package/.claude/commands/synapse/tasks/create-command.md +109 -0
  85. package/.claude/commands/synapse/tasks/create-domain.md +127 -0
  86. package/.claude/commands/synapse/tasks/diagnose-synapse.md +245 -0
  87. package/.claude/commands/synapse/tasks/edit-rule.md +109 -0
  88. package/.claude/commands/synapse/tasks/suggest-domain.md +116 -0
  89. package/.claude/commands/synapse/tasks/toggle-domain.md +83 -0
  90. package/.claude/commands/synapse/templates/domain-template +8 -0
  91. package/.claude/commands/synapse/templates/manifest-entry-template +4 -0
  92. package/.claude/commands/synapse/utils/manifest-parser-reference.md +134 -0
  93. package/.claude/hooks/precompact-session-digest.cjs +2 -2
  94. package/.claude/skills/AIOX/agents/aiox-master/SKILL.md +511 -0
  95. package/.claude/skills/AIOX/agents/analyst/SKILL.md +281 -0
  96. package/.claude/skills/AIOX/agents/architect/SKILL.md +482 -0
  97. package/.claude/skills/AIOX/agents/data-engineer/SKILL.md +503 -0
  98. package/.claude/skills/AIOX/agents/dev/SKILL.md +568 -0
  99. package/.claude/skills/AIOX/agents/devops/SKILL.md +597 -0
  100. package/.claude/skills/AIOX/agents/pm/SKILL.md +385 -0
  101. package/.claude/skills/AIOX/agents/po/SKILL.md +343 -0
  102. package/.claude/skills/AIOX/agents/qa/SKILL.md +451 -0
  103. package/.claude/skills/AIOX/agents/sm/SKILL.md +295 -0
  104. package/.claude/skills/AIOX/agents/squad-creator/SKILL.md +352 -0
  105. package/.claude/skills/AIOX/agents/ux-design-expert/SKILL.md +503 -0
  106. package/.claude/skills/architect-first/SKILL.md +275 -0
  107. package/.claude/skills/architect-first/assets/architecture-template.md +505 -0
  108. package/.claude/skills/architect-first/assets/config-template.yaml +351 -0
  109. package/.claude/skills/architect-first/references/architecture-checklist.md +216 -0
  110. package/.claude/skills/architect-first/references/pre-implementation-checklist.md +119 -0
  111. package/.claude/skills/architect-first/references/stop-rules-guide.md +291 -0
  112. package/.claude/skills/architect-first/references/testing-strategy-guide.md +477 -0
  113. package/.claude/skills/architect-first/scripts/architecture_validator.py +490 -0
  114. package/.claude/skills/architect-first/scripts/check_coupling.py +306 -0
  115. package/.claude/skills/architect-first/scripts/validate_risk_mitigation.py +382 -0
  116. package/.claude/skills/checklist-runner/SKILL.md +113 -0
  117. package/.claude/skills/clone-mind.md +329 -0
  118. package/.claude/skills/coderabbit-review/SKILL.md +106 -0
  119. package/.claude/skills/course-generation-workflow.md +76 -0
  120. package/.claude/skills/enhance-workflow.md +466 -0
  121. package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  122. package/.claude/skills/mcp-builder/SKILL.md +328 -0
  123. package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  124. package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  125. package/.claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  126. package/.claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  127. package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  128. package/.claude/skills/mcp-builder/scripts/evaluation.py +373 -0
  129. package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  130. package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  131. package/.claude/skills/ralph.md +181 -0
  132. package/.claude/skills/skill-creator/LICENSE.txt +202 -0
  133. package/.claude/skills/skill-creator/SKILL.md +209 -0
  134. package/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  135. package/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  136. package/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
  137. package/.claude/skills/squad.md +301 -0
  138. package/.claude/skills/synapse/SKILL.md +132 -0
  139. package/.claude/skills/synapse/assets/README.md +50 -0
  140. package/.claude/skills/synapse/references/brackets.md +100 -0
  141. package/.claude/skills/synapse/references/commands.md +118 -0
  142. package/.claude/skills/synapse/references/domains.md +126 -0
  143. package/.claude/skills/synapse/references/layers.md +186 -0
  144. package/.claude/skills/synapse/references/manifest.md +142 -0
  145. package/.claude/skills/tech-search/SKILL.md +431 -0
  146. package/.claude/skills/tech-search/prompts/page-extract.md +133 -0
  147. package/README.en.md +2 -2
  148. package/README.md +8 -2
  149. package/bin/aiox.js +55 -4
  150. package/bin/utils/framework-guard.js +4 -2
  151. package/bin/utils/pro-detector.js +119 -28
  152. package/bin/utils/validate-publish.js +6 -6
  153. package/docs/aiox-agent-flows/devops-system.md +18 -0
  154. package/docs/aiox-workflows/README.md +1 -0
  155. package/docs/aiox-workflows/pro-access-grant-workflow.md +218 -0
  156. package/docs/guides/pro/access-grant-ops-playbook.md +370 -0
  157. package/docs/guides/pro/install-gate-setup.md +12 -6
  158. package/docs/guides/pro/squad-creator-handoff-pro-access-ops.md +134 -0
  159. package/docs/guides/supabase-ops-handoff.md +768 -0
  160. package/package.json +12 -1
  161. package/packages/aiox-pro-cli/bin/aiox-pro.js +33 -12
  162. package/packages/installer/src/config/configure-environment.js +118 -50
  163. package/packages/installer/src/installer/aiox-core-installer.js +124 -27
  164. package/packages/installer/src/installer/brownfield-upgrader.js +66 -9
  165. package/packages/installer/src/installer/dependency-installer.js +4 -0
  166. package/packages/installer/src/pro/pro-scaffolder.js +5 -5
  167. package/packages/installer/src/updater/index.js +151 -10
  168. package/packages/installer/src/wizard/ide-config-generator.js +73 -7
  169. package/packages/installer/src/wizard/index.js +119 -31
  170. package/packages/installer/src/wizard/pro-setup.js +118 -47
  171. package/packages/installer/src/wizard/validation/validators/dependency-validator.js +32 -25
  172. package/packages/installer/src/wizard/validation/validators/file-structure-validator.js +26 -0
  173. package/packages/installer/tests/unit/artifact-copy-pipeline/artifact-copy-pipeline.test.js +84 -1
  174. package/packages/installer/tests/unit/claude-md-template-v5/claude-md-template-v5.test.js +1 -1
  175. package/packages/installer/tests/unit/doctor/doctor-checks.test.js +85 -19
  176. package/packages/installer/tests/unit/entity-registry-bootstrap.test.js +4 -4
  177. package/packages/installer/tests/unit/generate-settings-json/generate-settings-json.test.js +5 -5
  178. package/packages/installer/tests/unit/ide-sync-integration/ide-sync-integration.test.js +4 -4
  179. package/packages/installer/tests/unit/merger/yaml-merger.test.js +11 -11
  180. package/pro/README.md +12 -1
  181. package/pro/license/index.js +3 -11
  182. package/pro/license/license-api.js +25 -0
  183. package/pro/license/license-cache.js +135 -31
  184. package/pro/license/license-crypto.js +59 -3
  185. package/pro/package.json +5 -4
  186. package/pro/squads/README.md +16 -16
  187. package/pro/squads/index.js +1 -1
  188. package/scripts/e2e/installed-skills-smoke.js +264 -0
  189. package/scripts/package-synapse.js +3 -3
  190. package/scripts/validate-package-completeness.js +8 -11
  191. package/.aiox-core/lib/build.json +0 -1
@@ -0,0 +1,33 @@
1
+ # Task: DevOps Pro Verify Status
2
+
3
+ > **Version:** 1.0.0
4
+ > **Created:** 2026-04-20
5
+ > **Type:** SUPPORT-OPS
6
+ > **Agent:** `@devops`
7
+
8
+ ## Purpose
9
+
10
+ Check email verification status for an authenticated AIOX Pro session.
11
+
12
+ ## Input
13
+
14
+ - `access_token`
15
+
16
+ ## Endpoint
17
+
18
+ - `POST https://aiox-license-server.vercel.app/api/v1/auth/verify-status`
19
+
20
+ ## Execution
21
+
22
+ 1. Call `verify-status` with `{ accessToken }`.
23
+ 2. Report `email` and `emailVerified`.
24
+ 3. If `emailVerified=false`, route to `*pro-resend-verification`.
25
+
26
+ ## Pass Criteria
27
+
28
+ - `200` response
29
+ - clear verified/unverified state
30
+
31
+ ## Source Of Truth
32
+
33
+ - `docs/guides/pro/access-grant-ops-playbook.md`
@@ -420,11 +420,61 @@ Gate: CONCERNS → qa.qaLocation/gates/{epic}.{story}-{slug}.yml
420
420
  - Always update story with gate reference
421
421
  - Clear, actionable findings
422
422
 
423
+ ## Post-Gate Status Update (MANDATORY)
424
+
425
+ **Reference:** `.claude/rules/story-lifecycle.md` — Status transitions are @qa responsibility during QA gate.
426
+
427
+ **This step MUST be executed before presenting results to user.**
428
+
429
+ **Change Log format:** Use `{date: YYYY-MM-DD}` and `{version: MAJOR.MINOR.PATCH}`. Version MUST follow semantic bump rules: major for breaking changes, minor for features, patch for fixes/process updates. HALT if either value cannot be resolved deterministically.
430
+
431
+ ### IF verdict is PASS or CONCERNS:
432
+
433
+ 0. **Pre-check (blocking):**
434
+ - If current Status is not `**InReview**`, HALT and log: "Cannot apply PASS/CONCERNS transition: expected InReview, found {current status}."
435
+ - If Change Log section is missing, HALT and request user to restore template structure.
436
+ 1. **Update story Status field** in the story file: change `**InReview**` to `**Done**`
437
+ 2. **Add Change Log entry:**
438
+ ```text
439
+ | {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | QA Gate {PASS|CONCERNS} — Status: InReview → Done | @qa |
440
+ ```
441
+ 3. **Log:** "✅ Story status updated: InReview → Done"
442
+
443
+ ### IF verdict is FAIL:
444
+
445
+ 0. **Pre-check (blocking):**
446
+ - If current Status is not `**InReview**`, HALT and log: "Cannot apply FAIL transition: expected InReview, found {current status}."
447
+ - If Change Log section is missing, HALT and request user to restore template structure.
448
+ 1. **Update story Status field** in the story file: change `**InReview**` to `**InProgress**`
449
+ 2. **Add Change Log entry:**
450
+ ```text
451
+ | {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | QA Gate FAIL — Status: InReview → InProgress — {reason} | @qa |
452
+ ```
453
+ 3. **Log:** "❌ Story returned to InProgress — fixes required"
454
+
455
+ ### IF verdict is WAIVED:
456
+
457
+ 0. **Pre-check (blocking):**
458
+ - If current Status is not `**InReview**`, HALT and log: "Cannot apply WAIVED transition: expected InReview, found {current status}."
459
+ - If Change Log section is missing, HALT and request user to restore template structure.
460
+ 1. **Update story Status field** in the story file: change `**InReview**` to `**Done**`
461
+ 2. **Add Change Log entry:**
462
+ ```text
463
+ | {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | QA Gate WAIVED — Status: InReview → Done — {waiver reason} | @qa |
464
+ ```
465
+ 3. **Log:** "⚠️ Story status updated: InReview → Done (waived)"
466
+
467
+ ### Rationale
468
+
469
+ Status transitions defined in `story-lifecycle.md` are advisory (contextual rules). This step makes them imperative (procedural), ensuring agents always execute the transition as part of the workflow rather than relying on contextual rule awareness.
470
+
471
+ ---
472
+
423
473
  ## Handoff
424
474
  next_agent: @devops
425
475
  next_command: *push
426
- condition: QA gate verdict is PASS
476
+ condition: QA gate verdict is PASS or CONCERNS (status updated to Done)
427
477
  alternatives:
428
- - agent: @dev, command: *apply-qa-fixes, condition: QA gate verdict is FAIL or CONCERNS
429
- - agent: @po, command: *close-story {story-id}, condition: QA gate verdict is WAIVED
430
-
478
+ - agent: @po, command: *review-concerns {story-id}, condition: QA gate verdict is CONCERNS (status updated to Done, has non-blocking issues)
479
+ - agent: @dev, command: *apply-qa-fixes, condition: QA gate verdict is FAIL (status updated to InProgress)
480
+ - agent: @po, command: *close-story {story-id}, condition: QA gate verdict is WAIVED (status updated to Done)
@@ -463,10 +463,47 @@ Provide a structured validation report including:
463
463
  - **Implementation Readiness Score**: 1-10 scale
464
464
  - **Confidence Level**: High/Medium/Low for successful implementation
465
465
 
466
+ ### 12. Post-Validation Status Update (MANDATORY)
467
+
468
+ **Reference:** `.claude/rules/story-lifecycle.md` — Draft → Ready transition is @po responsibility.
469
+
470
+ **This step MUST be executed before presenting results to user.**
471
+
472
+ **Change Log format:** Use `{date: YYYY-MM-DD}` and `{version: MAJOR.MINOR.PATCH}`. Version MUST follow semantic bump rules: major for breaking changes, minor for features, patch for fixes/process updates. HALT if either value cannot be resolved deterministically.
473
+
474
+ #### IF verdict is GO (score >= 7):
475
+
476
+ 0. **Pre-check (blocking):**
477
+ - If current Status is not `**Draft**`, HALT and log: "Cannot apply GO transition: expected Draft, found {current status}."
478
+ - If Change Log section is missing, HALT and request user to restore template structure.
479
+ 1. **Update story Status field** in the story file: change `**Draft**` to `**Ready**`
480
+ 2. **Add Change Log entry:**
481
+ ```text
482
+ | {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | Validated GO ({score}/10) — Status: Draft → Ready | @po |
483
+ ```
484
+ 3. **Log:** "✅ Story status updated: Draft → Ready"
485
+
486
+ #### IF verdict is NO-GO (score < 7):
487
+
488
+ 0. **Pre-check (blocking):**
489
+ - If current Status is not `**Draft**`, HALT and log: "Cannot apply NO-GO outcome: expected Draft, found {current status}."
490
+ - If Change Log section is missing, HALT and request user to restore template structure.
491
+ 1. **Keep** story Status as `**Draft**`
492
+ 2. **Add Change Log entry:**
493
+ ```text
494
+ | {date: YYYY-MM-DD} | {version: MAJOR.MINOR.PATCH} | Validation NO-GO — {reason summary} | @po |
495
+ ```
496
+ 3. **Log:** "❌ Story remains Draft — fixes required before re-validation"
497
+
498
+ #### Rationale
499
+
500
+ Status transitions defined in `story-lifecycle.md` are advisory (contextual rules). This step makes them imperative (procedural), ensuring agents always execute the transition as part of the workflow rather than relying on contextual rule awareness.
501
+
502
+ ---
503
+
466
504
  ## Handoff
467
505
  next_agent: @dev
468
506
  next_command: *develop {story-id}
469
- condition: Story status is Approved (GO decision)
507
+ condition: Story status is Ready (GO decision, status updated in Step 12)
470
508
  alternatives:
471
509
  - agent: @sm, command: *draft, condition: Story rejected (NO-GO), needs rework
472
-
@@ -122,6 +122,7 @@ ide_sync_system:
122
122
  claude-code:
123
123
  enabled: true
124
124
  path: ".claude/commands/AIOX/agents"
125
+ skillsPath: ".claude/skills"
125
126
  format: "full-markdown-yaml"
126
127
  codex:
127
128
  enabled: true
@@ -0,0 +1,69 @@
1
+ # Codex Skills Sync
2
+
3
+ Tools for generating local Codex skills (`.codex/skills/aiox-*`) from AIOX agent and squad definitions.
4
+
5
+ ## When To Use Which
6
+
7
+ There are two complementary entry points:
8
+
9
+ | Tool | Scope | Use case |
10
+ |------|-------|----------|
11
+ | `npm run sync:skills:codex` (`index.js`) | **Core agents only** (`.aiox-core/development/agents/*.md`) | CI / incremental sync. Tightly coupled with the shared `agent-parser.js` from `ide-sync/`. Used after editing core agent files to keep `.codex/skills/` in step. |
12
+ | `npm run setup:codex-skills` (`bootstrap.js`) | **Core agents + squad entry chiefs** (`squads/*/config.yaml` → entry agent) | First-time / operator bootstrap. Standalone with vendored `js-yaml` fallback. Use after a fresh checkout, after adding a new squad, or when the `$` menu in Codex is missing skills (e.g. squad chiefs not loading). |
13
+
14
+ If a skill exists in `.codex/skills/` but does not contain the marker `<!-- AIOX-CODEX-LOCAL-SKILLS: generated -->`, `bootstrap.js` skips it by default to preserve hand-edits. Pass `--force` to overwrite (a `.bak-<timestamp>` copy is created first).
15
+
16
+ ## bootstrap.js
17
+
18
+ ```
19
+ npm run setup:codex-skills # generate / update
20
+ npm run setup:codex-skills:dry # preview without writes
21
+ node bootstrap.js --force # overwrite non-generated skills (creates .bak)
22
+ node bootstrap.js --help # full options
23
+ ```
24
+
25
+ Discovery rules:
26
+
27
+ 1. **Core agents** — every `*.md` in `.aiox-core/development/agents/` becomes a `aiox-<id>` skill.
28
+ 2. **Squad chiefs** — every `squads/*/config.yaml` is parsed; the entry agent is resolved via:
29
+ - explicit `entry_agent`, `squad.entry_agent`, `pack.entry_agent`, `orchestrator.agent`, or `tier_system.orchestrator` field
30
+ - first agent with `tier: orchestrator` or id matching `*chief`
31
+ - file matching `*-chief.md` in `squads/<name>/agents/`
32
+ - first agent file as fallback
33
+ 3. **Skill ID** — `aiox-<entry>` if the entry name is squad-specific (e.g. `mega-brain-chief`); otherwise `aiox-<squad>-<entry>` to avoid collisions.
34
+
35
+ After running, restart Codex CLI from the project root if the `$` menu does not refresh automatically.
36
+
37
+ ## index.js (canonical incremental sync)
38
+
39
+ ```
40
+ npm run sync:skills:codex # local .codex/skills only
41
+ npm run sync:skills:codex:global # also write to ~/.codex/skills
42
+ ```
43
+
44
+ Used by CI and by the unified ide-sync pipeline. Does not generate squad-chief skills — use `bootstrap.js` for that.
45
+
46
+ ## validate.js
47
+
48
+ ```
49
+ npm run validate:codex-skills # validate aiox-* skill / agent parity (strict)
50
+ ```
51
+
52
+ Verifies that every core agent has a corresponding `.codex/skills/aiox-<id>/SKILL.md`. Squad-chief skills are out of scope for this validator.
53
+
54
+ ## Files generated
55
+
56
+ Output directory defaults to `.codex/skills/<skill-id>/SKILL.md`. The generated files include:
57
+
58
+ - A YAML frontmatter (`name`, `description`)
59
+ - The `<!-- AIOX-CODEX-LOCAL-SKILLS: generated -->` marker (used by future runs to detect ownership)
60
+ - A pointer to the source-of-truth file (loaded on demand by Codex)
61
+ - A short activation protocol and starter command list
62
+
63
+ The source files in `.aiox-core/development/agents/` and `squads/*/agents/` remain authoritative. Generated skills are activator stubs.
64
+
65
+ ## Story reference
66
+
67
+ Story 123.9 — Codex local skills bootstrap (squad chief coverage).
68
+
69
+ Background: students reported that squad-chief skills (e.g. `mega-brain-chief`, `slides-chief`) did not appear in Codex's `$` menu. Root cause: `index.js` only generated skills from `.aiox-core/development/agents/` — squad chiefs in `squads/*/agents/` were not covered. A provisional standalone script was distributed manually; this directory captures the definitive vendored solution.