specweave 2.2.2 → 2.3.0

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 (132) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/README.md +22 -5
  3. package/bin/check-build.js +43 -0
  4. package/bin/check-node.js +136 -0
  5. package/bin/help.js +68 -0
  6. package/bin/project.js +28 -0
  7. package/bin/specweave.js +26 -305
  8. package/bin/startup-check.js +44 -0
  9. package/dist/dashboard/assets/index-DS3yH-sX.css +1 -0
  10. package/dist/dashboard/assets/index-DjfDqgzX.js +13 -0
  11. package/dist/dashboard/assets/web-0-CXU3YvQl.woff2 +0 -0
  12. package/dist/dashboard/assets/web-1-CnEgTPdE.woff2 +0 -0
  13. package/dist/dashboard/assets/web-10-ppjp2k5c.woff2 +0 -0
  14. package/dist/dashboard/assets/web-11-T5L87s1n.woff2 +0 -0
  15. package/dist/dashboard/assets/web-2-Cuw1d432.woff2 +0 -0
  16. package/dist/dashboard/assets/web-3-tuJ4lY6O.woff2 +0 -0
  17. package/dist/dashboard/assets/web-4-KUPCjGsn.woff2 +0 -0
  18. package/dist/dashboard/assets/web-5-BD64o3ke.woff2 +0 -0
  19. package/dist/dashboard/assets/web-6-CuVUMDWO.woff2 +0 -0
  20. package/dist/dashboard/assets/web-7-B2O-dwcv.woff2 +0 -0
  21. package/dist/dashboard/assets/web-8-b0I-AwbV.woff2 +0 -0
  22. package/dist/dashboard/assets/web-9-CjmLAiqB.woff2 +0 -0
  23. package/dist/dashboard/index.html +3 -3
  24. package/dist/src/adapters/codex/README.md +5 -101
  25. package/dist/src/adapters/codex/adapter.d.ts +5 -6
  26. package/dist/src/adapters/codex/adapter.d.ts.map +1 -1
  27. package/dist/src/adapters/codex/adapter.js +40 -226
  28. package/dist/src/adapters/codex/adapter.js.map +1 -1
  29. package/dist/src/adapters/registry.yaml +1 -1
  30. package/dist/src/cli/commands/dashboard.js +6 -6
  31. package/dist/src/cli/commands/dashboard.js.map +1 -1
  32. package/dist/src/cli/commands/gc.d.ts.map +1 -1
  33. package/dist/src/cli/commands/gc.js +18 -2
  34. package/dist/src/cli/commands/gc.js.map +1 -1
  35. package/dist/src/cli/commands/living-docs.d.ts.map +1 -1
  36. package/dist/src/cli/commands/living-docs.js +12 -6
  37. package/dist/src/cli/commands/living-docs.js.map +1 -1
  38. package/dist/src/cli/commands/lsp.d.ts.map +1 -1
  39. package/dist/src/cli/commands/lsp.js +38 -9
  40. package/dist/src/cli/commands/lsp.js.map +1 -1
  41. package/dist/src/cli/commands/project.d.ts +25 -0
  42. package/dist/src/cli/commands/project.d.ts.map +1 -0
  43. package/dist/src/cli/commands/project.js +123 -0
  44. package/dist/src/cli/commands/project.js.map +1 -0
  45. package/dist/src/cli/commands/refresh-plugins.d.ts +1 -0
  46. package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
  47. package/dist/src/cli/commands/refresh-plugins.js +15 -3
  48. package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
  49. package/dist/src/cli/commands/save.d.ts +10 -2
  50. package/dist/src/cli/commands/save.d.ts.map +1 -1
  51. package/dist/src/cli/commands/save.js +35 -4
  52. package/dist/src/cli/commands/save.js.map +1 -1
  53. package/dist/src/cli/commands/update.d.ts.map +1 -1
  54. package/dist/src/cli/commands/update.js +7 -4
  55. package/dist/src/cli/commands/update.js.map +1 -1
  56. package/dist/src/cli/helpers/init/greenfield-detection.d.ts.map +1 -1
  57. package/dist/src/cli/helpers/init/greenfield-detection.js +12 -13
  58. package/dist/src/cli/helpers/init/greenfield-detection.js.map +1 -1
  59. package/dist/src/config/types.d.ts +4 -4
  60. package/dist/src/core/doctor/checkers/installation-health-checker.d.ts.map +1 -1
  61. package/dist/src/core/doctor/checkers/installation-health-checker.js +10 -0
  62. package/dist/src/core/doctor/checkers/installation-health-checker.js.map +1 -1
  63. package/dist/src/core/jev/browse.d.ts +2 -2
  64. package/dist/src/core/jev/browse.d.ts.map +1 -1
  65. package/dist/src/core/jev/browse.js +57 -11
  66. package/dist/src/core/jev/browse.js.map +1 -1
  67. package/dist/src/core/jev/client.d.ts.map +1 -1
  68. package/dist/src/core/jev/client.js +49 -20
  69. package/dist/src/core/jev/client.js.map +1 -1
  70. package/dist/src/core/jev/decide.d.ts.map +1 -1
  71. package/dist/src/core/jev/decide.js +12 -7
  72. package/dist/src/core/jev/decide.js.map +1 -1
  73. package/dist/src/core/living-docs/discovery.d.ts +6 -0
  74. package/dist/src/core/living-docs/discovery.d.ts.map +1 -1
  75. package/dist/src/core/living-docs/discovery.js +18 -6
  76. package/dist/src/core/living-docs/discovery.js.map +1 -1
  77. package/dist/src/core/lsp/lsp-client.d.ts.map +1 -1
  78. package/dist/src/core/lsp/lsp-client.js +13 -8
  79. package/dist/src/core/lsp/lsp-client.js.map +1 -1
  80. package/dist/src/core/project-hub/brief.d.ts +11 -0
  81. package/dist/src/core/project-hub/brief.d.ts.map +1 -0
  82. package/dist/src/core/project-hub/brief.js +39 -0
  83. package/dist/src/core/project-hub/brief.js.map +1 -0
  84. package/dist/src/core/project-hub/store.d.ts +25 -0
  85. package/dist/src/core/project-hub/store.d.ts.map +1 -0
  86. package/dist/src/core/project-hub/store.js +174 -0
  87. package/dist/src/core/project-hub/store.js.map +1 -0
  88. package/dist/src/core/project-hub/types.d.ts +51 -0
  89. package/dist/src/core/project-hub/types.d.ts.map +1 -0
  90. package/dist/src/core/project-hub/types.js +16 -0
  91. package/dist/src/core/project-hub/types.js.map +1 -0
  92. package/dist/src/core/session/handoff-secret-scrub.d.ts.map +1 -1
  93. package/dist/src/core/session/handoff-secret-scrub.js +2 -1
  94. package/dist/src/core/session/handoff-secret-scrub.js.map +1 -1
  95. package/dist/src/dashboard/server/dashboard-server.d.ts.map +1 -1
  96. package/dist/src/dashboard/server/dashboard-server.js +2 -0
  97. package/dist/src/dashboard/server/dashboard-server.js.map +1 -1
  98. package/dist/src/dashboard/server/data/intent-store.d.ts +5 -0
  99. package/dist/src/dashboard/server/data/intent-store.d.ts.map +1 -1
  100. package/dist/src/dashboard/server/data/intent-store.js +31 -0
  101. package/dist/src/dashboard/server/data/intent-store.js.map +1 -1
  102. package/dist/src/dashboard/server/routes/project-hub-routes.d.ts +5 -0
  103. package/dist/src/dashboard/server/routes/project-hub-routes.d.ts.map +1 -0
  104. package/dist/src/dashboard/server/routes/project-hub-routes.js +75 -0
  105. package/dist/src/dashboard/server/routes/project-hub-routes.js.map +1 -0
  106. package/dist/src/init/compliance/types.d.ts +1 -1
  107. package/dist/src/init/research/types.d.ts +1 -1
  108. package/dist/src/utils/cleanup-stale-plugins.d.ts +9 -0
  109. package/dist/src/utils/cleanup-stale-plugins.d.ts.map +1 -1
  110. package/dist/src/utils/cleanup-stale-plugins.js +40 -23
  111. package/dist/src/utils/cleanup-stale-plugins.js.map +1 -1
  112. package/dist/src/utils/find-project-root.d.ts +23 -0
  113. package/dist/src/utils/find-project-root.d.ts.map +1 -1
  114. package/dist/src/utils/find-project-root.js +26 -4
  115. package/dist/src/utils/find-project-root.js.map +1 -1
  116. package/dist/src/utils/native-skill-installer.d.ts +10 -0
  117. package/dist/src/utils/native-skill-installer.d.ts.map +1 -0
  118. package/dist/src/utils/native-skill-installer.js +79 -0
  119. package/dist/src/utils/native-skill-installer.js.map +1 -0
  120. package/dist/src/utils/plugin-copier.d.ts +9 -0
  121. package/dist/src/utils/plugin-copier.d.ts.map +1 -1
  122. package/dist/src/utils/plugin-copier.js +20 -1
  123. package/dist/src/utils/plugin-copier.js.map +1 -1
  124. package/package.json +4 -3
  125. package/plugins/specweave/.claude-plugin/plugin.json +1 -1
  126. package/plugins/specweave/marketplace.json +6 -0
  127. package/plugins/specweave/skills/project/SKILL.md +45 -0
  128. package/src/styles/fonts/ibmplexsans-OFL.txt +93 -0
  129. package/src/styles/fonts/newsreader-OFL.txt +93 -0
  130. package/src/templates/AGENTS.md.template +4 -0
  131. package/dist/dashboard/assets/index-BeKUULf0.css +0 -1
  132. package/dist/dashboard/assets/index-Bf5TF0_l.js +0 -13
@@ -5,10 +5,10 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>SpecWeave Dashboard</title>
7
7
  <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text y='28' font-size='28'>⚡</text></svg>" />
8
- <script type="module" crossorigin src="/assets/index-Bf5TF0_l.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-BeKUULf0.css">
8
+ <script type="module" crossorigin src="/assets/index-DjfDqgzX.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-DS3yH-sX.css">
10
10
  </head>
11
- <body class="bg-gray-950 text-gray-100 antialiased">
11
+ <body class="antialiased">
12
12
  <div id="root"></div>
13
13
  </body>
14
14
  </html>
@@ -1,105 +1,9 @@
1
- # OpenAI Codex Adapter
1
+ # OpenAI Codex adapter
2
2
 
3
- **Automation Level**: Semi (Good experience with GPT-5-Codex and multiple access points)
3
+ SpecWeave uses `AGENTS.md` for project instructions and `.agents/skills` for Codex native skills. Initialize with `specweave init --adapter codex`, or use `specweave project init --name "Research" --goal "Produce a sourced report"` in an ordinary folder. Run `specweave refresh-plugins` to refresh core skills for the configured adapter.
4
4
 
5
- ## Overview
5
+ The portable project hub holds shared goals, context, artifact references and reusable routines. `specweave project brief --harness codex` generates a fresh coordinator brief; add `--intent ID` for a worker assignment. Native task creation, subagents, connector authorization and scheduling remain with Codex and the user's permissions. CLI, desktop and cloud surfaces can differ.
6
6
 
7
- The Codex adapter provides **semi-automation** for SpecWeave using OpenAI's Codex (ChatGPT Code Interpreter/Codex CLI) with **AGENTS.md** as the universal instruction file.
7
+ Managed native skills use the `sw-` prefix (for example `$sw-project`). Changed installations preserve the previous directory under `.specweave/state/skill-backups/` before copying. Existing `.codex/skills` files are retained to avoid deleting user modifications. Review legacy duplicates when migrating. Hooks require supported events and explicit host trust review; this adapter does not install or approve hooks. No model or subscription tier is hardcoded.
8
8
 
9
- ## Key Features
10
-
11
- - **GPT-5-Codex Model**: Optimized for engineering tasks
12
- - **Multiple Access Points**: CLI, Web, IDE, GitHub, iOS app
13
- - **Task-Based Execution**: Isolated environments per task
14
- - **File Operations**: Read, write, execute commands
15
- - **Test Execution**: Run tests and validate implementations
16
- - **Real-Time Progress**: Monitor task execution (1-30 min/task)
17
-
18
- ## Installation
19
-
20
- ```bash
21
- # Install Codex CLI (requires ChatGPT Plus/Pro/Business/Enterprise)
22
- npm install -g openai-codex-cli
23
-
24
- # Initialize SpecWeave project with Codex adapter
25
- npx specweave init my-project --adapter codex
26
- ```
27
-
28
- ## How It Works
29
-
30
- ### Option 1: Codex CLI (Fastest)
31
- ```bash
32
- codex "Read AGENTS.md and create increment for user authentication"
33
- ```
34
-
35
- ### Option 2: ChatGPT Web (Most Accessible)
36
- 1. Upload AGENTS.md file
37
- 2. Say: "Create increment for user authentication following SpecWeave"
38
- 3. Copy generated content to files
39
-
40
- ### Option 3: IDE Integration
41
- Use Codex in your IDE (VS Code, JetBrains) with AGENTS.md reference
42
-
43
- ## Universal AGENTS.md
44
-
45
- Instead of tool-specific files, SpecWeave uses **AGENTS.md** that works with ALL tools:
46
-
47
- - ✅ Codex (OpenAI)
48
- - ✅ Gemini CLI
49
- - ✅ Cursor
50
- - ✅ GitHub Copilot
51
- - ✅ ANY AI tool
52
-
53
- **Single source of truth** = easier maintenance!
54
-
55
- ## Example Workflows
56
-
57
- ### Create Feature (CLI)
58
- ```bash
59
- codex "Read AGENTS.md. Create increment 0002 for payment processing with Stripe."
60
- ```
61
-
62
- ### Create Feature (Web)
63
- 1. Upload AGENTS.md to ChatGPT
64
- 2. Say: "Create increment for payment processing"
65
- 3. Download generated files
66
-
67
- ### Implement Task
68
- ```bash
69
- codex "Read increment 0002, implement task T001"
70
- ```
71
-
72
- ### Fix Bug with Tests
73
- ```bash
74
- codex "Read AGENTS.md and increment 0001. Fix auth bug. Run tests."
75
- ```
76
-
77
- ## Comparison with Claude Code
78
-
79
- | Feature | Claude Code | Codex |
80
- |---------|-------------|-------|
81
- | **Automation** | Full | Semi |
82
- | **Skills** | Native | Via AGENTS.md |
83
- | **Agents** | Native | Via AGENTS.md |
84
- | **Access Points** | CLI only | CLI + Web + IDE + GitHub + iOS |
85
- | **Model** | Opus 4.6 | GPT-5-Codex |
86
- | **Task Isolation** | No | Yes (isolated per task) |
87
- | **Hooks** | Yes | No |
88
-
89
- ## Plans & Pricing
90
-
91
- - **ChatGPT Plus**: $20/month (Codex included)
92
- - **ChatGPT Pro**: $200/month (unlimited, faster)
93
- - **Business/Enterprise**: Custom pricing
94
-
95
- ## Links
96
-
97
- - [OpenAI Codex](https://openai.com/codex/)
98
- - [ChatGPT Features](https://chatgpt.com/features/codex)
99
- - [SpecWeave Website](https://spec-weave.com)
100
-
101
- ---
102
-
103
- **Status**: Active (v0.2.0+)
104
- **Market Share**: ~20% (OpenAI users)
105
- **Priority**: P1 (high impact - most accessible AI tool)
9
+ Official references: [Skills](https://learn.chatgpt.com/docs/build-skills), [Projects](https://learn.chatgpt.com/docs/projects), [Hooks](https://learn.chatgpt.com/docs/hooks).
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Codex Adapter (OpenAI)
3
3
  *
4
- * Semi-automation adapter for OpenAI Codex (ChatGPT Code Interpreter/Codex CLI).
4
+ * OpenAI Codex adapter with native skills and portable project instructions.
5
5
  * Uses universal AGENTS.md file for instructions.
6
6
  *
7
7
  * Codex features:
8
- * - Works in CLI, IDE, web, GitHub, iOS app
9
- * - GPT-5-Codex optimized for engineering tasks
8
+ * - Native skills and project instructions
10
9
  * - File read/write operations
11
10
  * - Test execution and validation
12
11
  * - Task-based isolated environments
@@ -50,15 +49,15 @@ export declare class CodexAdapter extends AdapterBase {
50
49
  getSkillsDirectory(): string;
51
50
  /**
52
51
  * Compile and install a plugin for OpenAI Codex.
53
- * Writes each SKILL.md as a separate file in `.codex/skills/`.
52
+ * Writes each SKILL.md as a separate file in `.agents/skills/`.
54
53
  */
55
54
  compilePlugin(plugin: Plugin): Promise<void>;
56
55
  /**
57
- * Unload a plugin from Codex — removes skill files from `.codex/skills/`.
56
+ * Unload a plugin from Codex — removes skill files from `.agents/skills/`.
58
57
  */
59
58
  unloadPlugin(pluginName: string): Promise<void>;
60
59
  /**
61
- * Get installed plugins for Codex by scanning `.codex/skills/`.
60
+ * Get installed plugins for Codex by scanning `.agents/skills/`.
62
61
  */
63
62
  getInstalledPlugins(): Promise<string[]>;
64
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/codex/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIzD,qBAAa,YAAa,SAAQ,WAAW;IAC3C,IAAI,SAAW;IACf,WAAW,SAAoF;IAC/F,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAQhC;;OAEG;IACH,QAAQ,IAAI,WAAW,EAAE;IAezB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B,kBAAkB,IAAI,MAAM;IAI5B;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9C;;OAEG;IACH,eAAe,IAAI,MAAM;CAsN1B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/codex/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIzD,qBAAa,YAAa,SAAQ,WAAW;IAC3C,IAAI,SAAW;IACf,WAAW,SAAuF;IAClG,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAQhC;;OAEG;IACH,QAAQ,IAAI,WAAW,EAAE;IAezB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrD;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B,kBAAkB,IAAI,MAAM;IAI5B;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9C;;OAEG;IACH,eAAe,IAAI,MAAM;CAuB1B"}
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * Codex Adapter (OpenAI)
3
3
  *
4
- * Semi-automation adapter for OpenAI Codex (ChatGPT Code Interpreter/Codex CLI).
4
+ * OpenAI Codex adapter with native skills and portable project instructions.
5
5
  * Uses universal AGENTS.md file for instructions.
6
6
  *
7
7
  * Codex features:
8
- * - Works in CLI, IDE, web, GitHub, iOS app
9
- * - GPT-5-Codex optimized for engineering tasks
8
+ * - Native skills and project instructions
10
9
  * - File read/write operations
11
10
  * - Test execution and validation
12
11
  * - Task-based isolated environments
@@ -17,12 +16,14 @@ import { AdapterBase } from '../adapter-base.js';
17
16
  import { applyInstructionTemplate } from '../../cli/helpers/init/instruction-file-writer.js';
18
17
  import { findSourceDir } from '../../cli/helpers/init/path-utils.js';
19
18
  import { getDirname } from '../../utils/esm-helpers.js';
19
+ import { installNativeSkills } from '../../utils/native-skill-installer.js';
20
+ import { normalizeSkillFrontmatter } from '../../utils/plugin-copier.js';
20
21
  const __dirname = getDirname(import.meta.url);
21
22
  export class CodexAdapter extends AdapterBase {
22
23
  constructor() {
23
24
  super(...arguments);
24
25
  this.name = 'codex';
25
- this.description = 'OpenAI Codex adapter - Semi-automation with AGENTS.md and task-based execution';
26
+ this.description = 'OpenAI Codex adapter - native skills, AGENTS.md and portable project coordination';
26
27
  this.automationLevel = 'semi';
27
28
  }
28
29
  /**
@@ -60,11 +61,11 @@ export class CodexAdapter extends AdapterBase {
60
61
  * Install Codex adapter
61
62
  */
62
63
  async install(options) {
63
- console.log('\n📦 Installing OpenAI Codex Adapter (Semi-Automation)\n');
64
+ console.log('\n📦 Installing OpenAI Codex Adapter\n');
64
65
  // Ensure .codex directory exists
65
66
  const codexDir = path.join(options.projectPath, '.codex');
66
67
  await fs.ensureDir(codexDir);
67
- await fs.ensureDir(path.join(codexDir, 'skills'));
68
+ await fs.ensureDir(path.join(options.projectPath, '.agents', 'skills'));
68
69
  // Generate AGENTS.md
69
70
  const agentsMdPath = path.join(options.projectPath, 'AGENTS.md');
70
71
  await this.generateAgentsMd(agentsMdPath, options);
@@ -108,250 +109,63 @@ export class CodexAdapter extends AdapterBase {
108
109
  return true;
109
110
  }
110
111
  getSkillsDirectory() {
111
- return '.codex/skills';
112
+ return '.agents/skills';
112
113
  }
113
114
  /**
114
115
  * Compile and install a plugin for OpenAI Codex.
115
- * Writes each SKILL.md as a separate file in `.codex/skills/`.
116
+ * Writes each SKILL.md as a separate file in `.agents/skills/`.
116
117
  */
117
118
  async compilePlugin(plugin) {
118
- const skillsDir = '.codex/skills';
119
+ const skillsDir = '.agents/skills';
119
120
  console.log(`\n📦 Installing plugin skills for Codex: ${plugin.manifest.name}`);
120
- await this.writeSkillFiles(plugin, skillsDir);
121
+ const result = installNativeSkills(plugin.skills.map(skill => ({
122
+ name: `${plugin.manifest.name}-${skill.name}`, sourceDir: skill.path,
123
+ })), process.cwd(), normalizeSkillFrontmatter);
124
+ for (const backup of result.backups)
125
+ console.log(` Previous skill preserved: ${backup}`);
121
126
  console.log(` ✓ ${plugin.skills.length} skill(s) written to ${skillsDir}/`);
122
127
  console.log(`\n✅ Plugin ${plugin.manifest.name} installed for Codex!`);
123
128
  }
124
129
  /**
125
- * Unload a plugin from Codex — removes skill files from `.codex/skills/`.
130
+ * Unload a plugin from Codex — removes skill files from `.agents/skills/`.
126
131
  */
127
132
  async unloadPlugin(pluginName) {
128
133
  console.log(`\n🗑️ Unloading plugin from Codex: ${pluginName}`);
129
- await this.removeSkillFiles(pluginName, '.codex/skills');
130
- console.log(` ✓ Removed from .codex/skills/`);
134
+ await this.removeSkillFiles(pluginName, '.agents/skills');
135
+ console.log(` ✓ Removed from .agents/skills/`);
131
136
  console.log(`\n✅ Plugin ${pluginName} unloaded!`);
132
137
  }
133
138
  /**
134
- * Get installed plugins for Codex by scanning `.codex/skills/`.
139
+ * Get installed plugins for Codex by scanning `.agents/skills/`.
135
140
  */
136
141
  async getInstalledPlugins() {
137
- return await this.listInstalledPluginsInDir('.codex/skills');
142
+ return await this.listInstalledPluginsInDir('.agents/skills');
138
143
  }
139
144
  /**
140
145
  * Get usage instructions for Codex adapter
141
146
  */
142
147
  getInstructions() {
143
148
  return `
144
- ================================================================
145
- OpenAI Codex Adapter - Semi-Automation
146
- ================================================================
147
-
148
- Your project is now configured for OpenAI Codex with SEMI-automation!
149
-
150
- WHAT THIS PROVIDES:
151
-
152
- - AGENTS.md (Universal Instructions)
153
- - Works with Codex CLI, ChatGPT web, and IDEs
154
- - Auto-generated from actual skills/agents
155
- - SpecWeave structure and workflows
156
- - GPT-5-Codex optimized guidance
157
-
158
- - Task-Based Execution
159
- - Isolated environments per task
160
- - File read/write operations
161
- - Test execution and validation
162
-
163
- QUICK START:
164
-
165
- **Option 1: Codex CLI** (Fastest)
166
-
167
- 1. Install Codex CLI:
168
-
169
- # Included with ChatGPT Plus, Pro, Business, Enterprise
170
- npm install -g openai-codex-cli
171
-
172
- 2. Create your first feature:
173
-
174
- codex "Read AGENTS.md and create increment for user authentication"
175
-
176
- Codex will:
177
- - Read AGENTS.md for SpecWeave context
178
- - Adopt PM role: Create spec.md (WHAT/WHY)
179
- - Adopt Architect role: Create plan.md (HOW)
180
- - Create tasks.md
181
- - Execute in isolated environment
182
-
183
- **Option 2: ChatGPT Web** (Most Accessible)
184
-
185
- 1. Open ChatGPT (Plus/Pro/Business/Enterprise)
186
-
187
- 2. Upload AGENTS.md file
188
-
189
- 3. Say:
190
- "I'm using SpecWeave framework. Create increment for user authentication."
191
-
192
- 4. Copy generated content to files:
193
- - spec.md
194
- - plan.md
195
- - tasks.md
196
-
197
- **Option 3: IDE Integration** (If available in your IDE)
198
-
199
- Use Codex integration in your IDE (VS Code, JetBrains, etc.)
200
- Reference AGENTS.md for SpecWeave structure.
201
-
202
- HOW TO USE:
203
-
204
- **With Codex CLI**:
205
- \`\`\`bash
206
- # Explicit reference (recommended):
207
- codex "Read AGENTS.md and [your request]"
208
-
209
- # Natural language:
210
- codex "Create a new feature following SpecWeave structure"
211
-
212
- # With context:
213
- codex "Following the PM role in AGENTS.md, create requirements for payments"
214
- \`\`\`
215
-
216
- **With ChatGPT Web**:
217
- 1. Upload AGENTS.md at start of conversation
218
- 2. Reference it: "Following AGENTS.md, create increment for..."
219
- 3. Download or copy-paste generated files
220
-
221
- CONTEXT LOADING:
222
-
223
- Load spec.md, plan.md, and tasks.md from your increment folder.
224
-
225
- \`\`\`bash
226
- # CLI:
227
- codex "Read spec.md, plan.md, tasks.md from increment 0001, then implement task T001"
228
-
229
- # Web:
230
- # 1. Upload spec.md, plan.md, tasks.md from increment folder
231
- # 2. Request task implementation
232
- \`\`\`
233
-
234
- FEATURES:
235
-
236
- ✅ GPT-5-Codex Model
237
- - Optimized for engineering tasks
238
- - Trained on complex, real-world projects
239
- - Code generation, debugging, refactoring
240
-
241
- ✅ Task-Based Execution
242
- - Each task in isolated environment
243
- - Real-time progress monitoring
244
- - Verifiable evidence (citations, logs)
245
-
246
- ✅ File Operations
247
- - Read and edit files
248
- - Run commands (tests, linters, type checkers)
249
- - Create new files and directories
250
-
251
- ✅ Multiple Access Points
252
- - CLI (fastest)
253
- - Web (most accessible)
254
- - IDE (most integrated)
255
- - GitHub (for PRs)
256
- - iOS app (mobile)
257
-
258
- ✅ Test Execution
259
- - Run test harnesses
260
- - Validate implementations
261
- - Ensure quality
262
-
263
- EXAMPLE WORKFLOWS:
264
-
265
- 1. **Create Feature (CLI)**:
266
- \`\`\`bash
267
- codex "Read AGENTS.md. Create increment 0002 for payment processing with Stripe. Follow SpecWeave structure."
268
- \`\`\`
269
-
270
- 2. **Create Feature (Web)**:
271
- - Upload AGENTS.md
272
- - Say: "Create increment for payment processing"
273
- - Download generated files
274
-
275
- 3. **Implement Task**:
276
- \`\`\`bash
277
- codex "Read increment 0002, implement task T001 (Setup Stripe SDK)"
278
- \`\`\`
279
-
280
- 4. **Fix Bug**:
281
- \`\`\`bash
282
- codex "Read AGENTS.md and increment 0001. Fix authentication bug. Run tests."
283
- \`\`\`
284
-
285
- 5. **Code Review**:
286
- \`\`\`bash
287
- codex "Adopt Tech Lead role from AGENTS.md. Review src/auth/ code."
288
- \`\`\`
289
-
290
- TIPS & TRICKS:
291
-
292
- 1. **Always Reference AGENTS.md**
293
- - CLI: Explicit in command
294
- - Web: Upload at conversation start
295
-
296
- 2. **Use Task-Based Approach**
297
- - Break work into tasks (T001, T002, etc.)
298
- - Each task runs in isolated environment
299
- - Easier to track and validate
300
-
301
- 3. **Monitor Progress**
302
- - CLI shows real-time progress (1-30 minutes per task)
303
- - Web shows thinking process
304
- - Review citations and logs
305
-
306
- 4. **Leverage Multiple Access Points**
307
- - CLI for speed
308
- - Web for accessibility
309
- - IDE for integration
310
-
311
- 5. **Validate with Tests**
312
- - Codex can run tests automatically
313
- - Verify implementations work
314
-
315
- COMPARISON:
316
-
317
- | Feature | Claude Code | Codex |
318
- |---------|-------------|-------|
319
- | **Automation** | Full | Semi |
320
- | **Skills** | Native | Via AGENTS.md |
321
- | **Agents** | Native | Via AGENTS.md |
322
- | **Access** | CLI only | CLI + Web + IDE + GitHub + iOS |
323
- | **Model** | Opus 4.6 | GPT-5-Codex |
324
- | **Task Isolation** | No | Yes (isolated environments) |
325
-
326
- LIMITATIONS:
327
-
328
- - No native skills/agents (manual role adoption via AGENTS.md)
329
- - No hooks (can't auto-update docs on events)
330
- - Tasks run 1-30 minutes (not instant)
331
- - Requires ChatGPT Plus/Pro/Business/Enterprise
332
-
333
- But very powerful with GPT-5-Codex and multiple access points!
334
-
335
- PLANS & PRICING:
336
-
337
- - **ChatGPT Plus**: $20/month (includes Codex CLI + Web)
338
- - **ChatGPT Pro**: $200/month (unlimited, faster)
339
- - **Business/Enterprise**: Custom pricing
340
-
341
- Free trial may be available - check OpenAI website.
342
-
343
- DOCUMENTATION:
344
-
345
- - AGENTS.md: Universal SpecWeave instructions (READ THIS!)
346
- - SPECWEAVE.md: Complete framework documentation
347
- - .codex/README.md: Codex adapter guide
348
- - https://openai.com/codex/
349
-
350
- You're ready to build with SpecWeave on OpenAI Codex!
351
-
352
- Pro tip: Use CLI for speed, Web for accessibility, and always
353
- reference AGENTS.md for SpecWeave structure!
354
- `;
149
+ OpenAI Codex adapter
150
+
151
+ AGENTS.md carries durable project instructions. Native skills live in .agents/skills.
152
+ Codex supports native skills and task/subagent capabilities; availability depends on
153
+ its surface and configuration. SpecWeave state remains in portable local files.
154
+
155
+ Quick start:
156
+ specweave project init --name "My project" --goal "Describe the outcome"
157
+ specweave project show
158
+ specweave project brief --harness codex
159
+ specweave refresh-plugins
160
+
161
+ Use the same intent board, task ledger and verification commands in any harness.
162
+ Managed native skills use the sw- prefix. Changed files are backed up under
163
+ .specweave/state/skill-backups. Existing .codex/skills files remain untouched.
164
+ Hooks require the host's supported events and trust review; this adapter does not
165
+ silently install or approve hooks. The project brief works without hooks.
166
+
167
+ Official setup: https://learn.chatgpt.com/docs/build-skills
168
+ `;
355
169
  }
356
170
  }
357
171
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/codex/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/codex/adapter.ts"],"names":[],"mappings":"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"}
@@ -360,7 +360,7 @@ capabilities:
360
360
  instruction_file:
361
361
  claude: .claude/skills + agents
362
362
  antigravity: .agent/skills/
363
- codex: .codex/skills/
363
+ codex: .agents/skills/
364
364
  opencode: .opencode/skills/
365
365
  copilot: .github/skills/
366
366
  cursor: .cursor/skills/
@@ -10,15 +10,15 @@ import * as fs from 'fs';
10
10
  import * as path from 'path';
11
11
  import chalk from 'chalk';
12
12
  import { findAvailablePort } from '../../utils/docs-preview/server-manager.js';
13
- import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
13
+ import { findEffectiveRoot } from '../../utils/find-project-root.js';
14
14
  const LOCK_FILE = path.join(process.env.HOME || '', '.specweave-dashboard.json');
15
15
  export async function dashboardCommand(options = {}) {
16
- const projectRoot = resolveEffectiveRoot();
17
- const specweavePath = path.join(projectRoot, '.specweave');
18
- if (!fs.existsSync(specweavePath)) {
19
- console.log(chalk.red('No SpecWeave project found in current directory.'));
16
+ const projectRoot = findEffectiveRoot();
17
+ if (!projectRoot) {
18
+ console.log(chalk.red(`No SpecWeave project found: no .specweave/config.json in ${process.cwd()} or any parent directory`));
20
19
  console.log(chalk.dim('Run `specweave init` first.'));
21
- process.exit(1);
20
+ process.exitCode = 1;
21
+ return;
22
22
  }
23
23
  // Check if dashboard is already running
24
24
  const existing = readLockFile();
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/gc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7E"}
1
+ {"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/gc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD7E"}
@@ -6,11 +6,27 @@
6
6
  */
7
7
  import * as path from 'path';
8
8
  import chalk from 'chalk';
9
- import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
9
+ import { findEffectiveRoot } from '../../utils/find-project-root.js';
10
10
  import { purgeState, findNestedSpecweaveDirs, worktreesSize, formatBytes, } from '../../core/state/state-gc.js';
11
11
  // NOTE: user-facing command output; console.* is intentional here.
12
12
  export async function gcCommand(options = {}) {
13
- const projectRoot = options.projectRoot || resolveEffectiveRoot();
13
+ // An explicit --project-root is the caller's responsibility. Otherwise resolve
14
+ // the effective root with no process.cwd() fallback: the nested-.specweave
15
+ // scan below walks the tree under this root, which outside a project would
16
+ // be $HOME or / (0879).
17
+ const projectRoot = options.projectRoot || findEffectiveRoot();
18
+ if (!projectRoot) {
19
+ const msg = `No SpecWeave project found: no .specweave/config.json in ${process.cwd()} or any parent directory`;
20
+ if (options.json) {
21
+ console.log(JSON.stringify({ error: msg }, null, 2));
22
+ }
23
+ else {
24
+ console.log(chalk.yellow(`\n${msg}`));
25
+ console.log(chalk.gray('Run this command from inside a SpecWeave project, or run `specweave init` first.\n'));
26
+ }
27
+ process.exitCode = 1;
28
+ return;
29
+ }
14
30
  const stateDir = path.join(projectRoot, '.specweave', 'state');
15
31
  const result = purgeState(stateDir, { apply: !!options.yes });
16
32
  const worktrees = worktreesSize(projectRoot);