@garygentry/feature-forge 0.1.3 → 0.1.5

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 (189) hide show
  1. package/README.md +1 -1
  2. package/adapters/GENERATION-REPORT.md +5 -1
  3. package/adapters/claude/references/forge-config-schema.json +36 -10
  4. package/adapters/claude/references/pipeline-state-schema.json +4 -0
  5. package/adapters/claude/references/process-overview.md +14 -4
  6. package/adapters/claude/references/shared-conventions.md +46 -0
  7. package/adapters/claude/references/templates/specs-hygiene/AGENTS.md +23 -0
  8. package/adapters/claude/references/templates/specs-hygiene/CLAUDE.md +22 -0
  9. package/adapters/claude/skills/forge-0-epic/SKILL.md +7 -5
  10. package/adapters/claude/skills/forge-1-prd/SKILL.md +4 -2
  11. package/adapters/claude/skills/forge-5-loop/SKILL.md +18 -16
  12. package/adapters/claude/skills/forge-5-loop/references/result-reporting.md +13 -0
  13. package/adapters/claude/skills/forge-5-loop/references/runner-contract.md +40 -0
  14. package/adapters/claude/skills/forge-6-docs/SKILL.md +10 -0
  15. package/adapters/claude/skills/forge-bootstrap/SKILL.md +240 -0
  16. package/adapters/claude/skills/forge-bootstrap/references/templates/ci/github-actions.yml +12 -0
  17. package/adapters/claude/skills/forge-bootstrap/references/templates/generic/run.sh +3 -0
  18. package/adapters/claude/skills/forge-bootstrap/references/templates/generic/test.sh +13 -0
  19. package/adapters/claude/skills/forge-bootstrap/references/templates/go/go.mod +3 -0
  20. package/adapters/claude/skills/forge-bootstrap/references/templates/go/main.go +12 -0
  21. package/adapters/claude/skills/forge-bootstrap/references/templates/go/main_test.go +11 -0
  22. package/adapters/claude/skills/forge-bootstrap/references/templates/hygiene/AGENTS.md +24 -0
  23. package/adapters/claude/skills/forge-bootstrap/references/templates/hygiene/CLAUDE.md +25 -0
  24. package/adapters/claude/skills/forge-bootstrap/references/templates/hygiene/README.md +11 -0
  25. package/adapters/claude/skills/forge-bootstrap/references/templates/licenses/Apache-2.0/LICENSE +198 -0
  26. package/adapters/claude/skills/forge-bootstrap/references/templates/licenses/MIT/LICENSE +21 -0
  27. package/adapters/claude/skills/forge-bootstrap/references/templates/python/pyproject.toml +24 -0
  28. package/adapters/claude/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/__init__.py +5 -0
  29. package/adapters/claude/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/main.py +13 -0
  30. package/adapters/claude/skills/forge-bootstrap/references/templates/python/tests/test_smoke.py +8 -0
  31. package/adapters/claude/skills/forge-bootstrap/references/templates/rust/Cargo.toml +15 -0
  32. package/adapters/claude/skills/forge-bootstrap/references/templates/rust/src/lib.rs +7 -0
  33. package/adapters/claude/skills/forge-bootstrap/references/templates/rust/src/main.rs +5 -0
  34. package/adapters/claude/skills/forge-bootstrap/references/templates/rust/tests/smoke.rs +6 -0
  35. package/adapters/claude/skills/forge-bootstrap/references/templates/typescript/package.json +15 -0
  36. package/adapters/claude/skills/forge-bootstrap/references/templates/typescript/src/index.ts +4 -0
  37. package/adapters/claude/skills/forge-bootstrap/references/templates/typescript/test/smoke.test.ts +6 -0
  38. package/adapters/claude/skills/forge-bootstrap/references/templates/typescript/tsconfig.json +14 -0
  39. package/adapters/codex/references/forge-config-schema.json +36 -10
  40. package/adapters/codex/references/pipeline-state-schema.json +4 -0
  41. package/adapters/codex/references/process-overview.md +14 -4
  42. package/adapters/codex/references/shared-conventions.md +46 -0
  43. package/adapters/codex/references/templates/specs-hygiene/AGENTS.md +23 -0
  44. package/adapters/codex/references/templates/specs-hygiene/CLAUDE.md +22 -0
  45. package/adapters/codex/skills/forge-0-epic/forge-0-epic.md +7 -5
  46. package/adapters/codex/skills/forge-1-prd/forge-1-prd.md +4 -2
  47. package/adapters/codex/skills/forge-5-loop/forge-5-loop.md +18 -16
  48. package/adapters/codex/skills/forge-5-loop/references/result-reporting.md +13 -0
  49. package/adapters/codex/skills/forge-5-loop/references/runner-contract.md +40 -0
  50. package/adapters/codex/skills/forge-6-docs/forge-6-docs.md +10 -0
  51. package/adapters/codex/skills/forge-bootstrap/forge-bootstrap.md +239 -0
  52. package/adapters/codex/skills/forge-bootstrap/references/templates/ci/github-actions.yml +12 -0
  53. package/adapters/codex/skills/forge-bootstrap/references/templates/generic/run.sh +3 -0
  54. package/adapters/codex/skills/forge-bootstrap/references/templates/generic/test.sh +13 -0
  55. package/adapters/codex/skills/forge-bootstrap/references/templates/go/go.mod +3 -0
  56. package/adapters/codex/skills/forge-bootstrap/references/templates/go/main.go +12 -0
  57. package/adapters/codex/skills/forge-bootstrap/references/templates/go/main_test.go +11 -0
  58. package/adapters/codex/skills/forge-bootstrap/references/templates/hygiene/AGENTS.md +24 -0
  59. package/adapters/codex/skills/forge-bootstrap/references/templates/hygiene/CLAUDE.md +25 -0
  60. package/adapters/codex/skills/forge-bootstrap/references/templates/hygiene/README.md +11 -0
  61. package/adapters/codex/skills/forge-bootstrap/references/templates/licenses/Apache-2.0/LICENSE +198 -0
  62. package/adapters/codex/skills/forge-bootstrap/references/templates/licenses/MIT/LICENSE +21 -0
  63. package/adapters/codex/skills/forge-bootstrap/references/templates/python/pyproject.toml +24 -0
  64. package/adapters/codex/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/__init__.py +5 -0
  65. package/adapters/codex/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/main.py +13 -0
  66. package/adapters/codex/skills/forge-bootstrap/references/templates/python/tests/test_smoke.py +8 -0
  67. package/adapters/codex/skills/forge-bootstrap/references/templates/rust/Cargo.toml +15 -0
  68. package/adapters/codex/skills/forge-bootstrap/references/templates/rust/src/lib.rs +7 -0
  69. package/adapters/codex/skills/forge-bootstrap/references/templates/rust/src/main.rs +5 -0
  70. package/adapters/codex/skills/forge-bootstrap/references/templates/rust/tests/smoke.rs +6 -0
  71. package/adapters/codex/skills/forge-bootstrap/references/templates/typescript/package.json +15 -0
  72. package/adapters/codex/skills/forge-bootstrap/references/templates/typescript/src/index.ts +4 -0
  73. package/adapters/codex/skills/forge-bootstrap/references/templates/typescript/test/smoke.test.ts +6 -0
  74. package/adapters/codex/skills/forge-bootstrap/references/templates/typescript/tsconfig.json +14 -0
  75. package/adapters/copilot/references/forge-config-schema.json +36 -10
  76. package/adapters/copilot/references/pipeline-state-schema.json +4 -0
  77. package/adapters/copilot/references/process-overview.md +14 -4
  78. package/adapters/copilot/references/shared-conventions.md +46 -0
  79. package/adapters/copilot/references/templates/specs-hygiene/AGENTS.md +23 -0
  80. package/adapters/copilot/references/templates/specs-hygiene/CLAUDE.md +22 -0
  81. package/adapters/copilot/skills/forge-0-epic/forge-0-epic.md +7 -5
  82. package/adapters/copilot/skills/forge-1-prd/forge-1-prd.md +4 -2
  83. package/adapters/copilot/skills/forge-5-loop/forge-5-loop.md +18 -16
  84. package/adapters/copilot/skills/forge-5-loop/references/result-reporting.md +13 -0
  85. package/adapters/copilot/skills/forge-5-loop/references/runner-contract.md +40 -0
  86. package/adapters/copilot/skills/forge-6-docs/forge-6-docs.md +10 -0
  87. package/adapters/copilot/skills/forge-bootstrap/forge-bootstrap.md +239 -0
  88. package/adapters/copilot/skills/forge-bootstrap/references/templates/ci/github-actions.yml +12 -0
  89. package/adapters/copilot/skills/forge-bootstrap/references/templates/generic/run.sh +3 -0
  90. package/adapters/copilot/skills/forge-bootstrap/references/templates/generic/test.sh +13 -0
  91. package/adapters/copilot/skills/forge-bootstrap/references/templates/go/go.mod +3 -0
  92. package/adapters/copilot/skills/forge-bootstrap/references/templates/go/main.go +12 -0
  93. package/adapters/copilot/skills/forge-bootstrap/references/templates/go/main_test.go +11 -0
  94. package/adapters/copilot/skills/forge-bootstrap/references/templates/hygiene/AGENTS.md +24 -0
  95. package/adapters/copilot/skills/forge-bootstrap/references/templates/hygiene/CLAUDE.md +25 -0
  96. package/adapters/copilot/skills/forge-bootstrap/references/templates/hygiene/README.md +11 -0
  97. package/adapters/copilot/skills/forge-bootstrap/references/templates/licenses/Apache-2.0/LICENSE +198 -0
  98. package/adapters/copilot/skills/forge-bootstrap/references/templates/licenses/MIT/LICENSE +21 -0
  99. package/adapters/copilot/skills/forge-bootstrap/references/templates/python/pyproject.toml +24 -0
  100. package/adapters/copilot/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/__init__.py +5 -0
  101. package/adapters/copilot/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/main.py +13 -0
  102. package/adapters/copilot/skills/forge-bootstrap/references/templates/python/tests/test_smoke.py +8 -0
  103. package/adapters/copilot/skills/forge-bootstrap/references/templates/rust/Cargo.toml +15 -0
  104. package/adapters/copilot/skills/forge-bootstrap/references/templates/rust/src/lib.rs +7 -0
  105. package/adapters/copilot/skills/forge-bootstrap/references/templates/rust/src/main.rs +5 -0
  106. package/adapters/copilot/skills/forge-bootstrap/references/templates/rust/tests/smoke.rs +6 -0
  107. package/adapters/copilot/skills/forge-bootstrap/references/templates/typescript/package.json +15 -0
  108. package/adapters/copilot/skills/forge-bootstrap/references/templates/typescript/src/index.ts +4 -0
  109. package/adapters/copilot/skills/forge-bootstrap/references/templates/typescript/test/smoke.test.ts +6 -0
  110. package/adapters/copilot/skills/forge-bootstrap/references/templates/typescript/tsconfig.json +14 -0
  111. package/adapters/cursor/references/forge-config-schema.json +36 -10
  112. package/adapters/cursor/references/pipeline-state-schema.json +4 -0
  113. package/adapters/cursor/references/process-overview.md +14 -4
  114. package/adapters/cursor/references/shared-conventions.md +46 -0
  115. package/adapters/cursor/references/templates/specs-hygiene/AGENTS.md +23 -0
  116. package/adapters/cursor/references/templates/specs-hygiene/CLAUDE.md +22 -0
  117. package/adapters/cursor/skills/forge-0-epic/forge-0-epic.mdc +7 -5
  118. package/adapters/cursor/skills/forge-1-prd/forge-1-prd.mdc +4 -2
  119. package/adapters/cursor/skills/forge-5-loop/forge-5-loop.mdc +18 -16
  120. package/adapters/cursor/skills/forge-5-loop/references/result-reporting.md +13 -0
  121. package/adapters/cursor/skills/forge-5-loop/references/runner-contract.md +40 -0
  122. package/adapters/cursor/skills/forge-6-docs/forge-6-docs.mdc +10 -0
  123. package/adapters/cursor/skills/forge-bootstrap/forge-bootstrap.mdc +240 -0
  124. package/adapters/cursor/skills/forge-bootstrap/references/templates/ci/github-actions.yml +12 -0
  125. package/adapters/cursor/skills/forge-bootstrap/references/templates/generic/run.sh +3 -0
  126. package/adapters/cursor/skills/forge-bootstrap/references/templates/generic/test.sh +13 -0
  127. package/adapters/cursor/skills/forge-bootstrap/references/templates/go/go.mod +3 -0
  128. package/adapters/cursor/skills/forge-bootstrap/references/templates/go/main.go +12 -0
  129. package/adapters/cursor/skills/forge-bootstrap/references/templates/go/main_test.go +11 -0
  130. package/adapters/cursor/skills/forge-bootstrap/references/templates/hygiene/AGENTS.md +24 -0
  131. package/adapters/cursor/skills/forge-bootstrap/references/templates/hygiene/CLAUDE.md +25 -0
  132. package/adapters/cursor/skills/forge-bootstrap/references/templates/hygiene/README.md +11 -0
  133. package/adapters/cursor/skills/forge-bootstrap/references/templates/licenses/Apache-2.0/LICENSE +198 -0
  134. package/adapters/cursor/skills/forge-bootstrap/references/templates/licenses/MIT/LICENSE +21 -0
  135. package/adapters/cursor/skills/forge-bootstrap/references/templates/python/pyproject.toml +24 -0
  136. package/adapters/cursor/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/__init__.py +5 -0
  137. package/adapters/cursor/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/main.py +13 -0
  138. package/adapters/cursor/skills/forge-bootstrap/references/templates/python/tests/test_smoke.py +8 -0
  139. package/adapters/cursor/skills/forge-bootstrap/references/templates/rust/Cargo.toml +15 -0
  140. package/adapters/cursor/skills/forge-bootstrap/references/templates/rust/src/lib.rs +7 -0
  141. package/adapters/cursor/skills/forge-bootstrap/references/templates/rust/src/main.rs +5 -0
  142. package/adapters/cursor/skills/forge-bootstrap/references/templates/rust/tests/smoke.rs +6 -0
  143. package/adapters/cursor/skills/forge-bootstrap/references/templates/typescript/package.json +15 -0
  144. package/adapters/cursor/skills/forge-bootstrap/references/templates/typescript/src/index.ts +4 -0
  145. package/adapters/cursor/skills/forge-bootstrap/references/templates/typescript/test/smoke.test.ts +6 -0
  146. package/adapters/cursor/skills/forge-bootstrap/references/templates/typescript/tsconfig.json +14 -0
  147. package/adapters/gemini/gemini-extension.json +4 -0
  148. package/adapters/gemini/references/forge-config-schema.json +36 -10
  149. package/adapters/gemini/references/pipeline-state-schema.json +4 -0
  150. package/adapters/gemini/references/process-overview.md +14 -4
  151. package/adapters/gemini/references/shared-conventions.md +46 -0
  152. package/adapters/gemini/references/templates/specs-hygiene/AGENTS.md +23 -0
  153. package/adapters/gemini/references/templates/specs-hygiene/CLAUDE.md +22 -0
  154. package/adapters/gemini/skills/forge-0-epic/forge-0-epic.md +7 -5
  155. package/adapters/gemini/skills/forge-1-prd/forge-1-prd.md +4 -2
  156. package/adapters/gemini/skills/forge-5-loop/forge-5-loop.md +18 -16
  157. package/adapters/gemini/skills/forge-5-loop/references/result-reporting.md +13 -0
  158. package/adapters/gemini/skills/forge-5-loop/references/runner-contract.md +40 -0
  159. package/adapters/gemini/skills/forge-6-docs/forge-6-docs.md +10 -0
  160. package/adapters/gemini/skills/forge-bootstrap/forge-bootstrap.md +239 -0
  161. package/adapters/gemini/skills/forge-bootstrap/references/templates/ci/github-actions.yml +12 -0
  162. package/adapters/gemini/skills/forge-bootstrap/references/templates/generic/run.sh +3 -0
  163. package/adapters/gemini/skills/forge-bootstrap/references/templates/generic/test.sh +13 -0
  164. package/adapters/gemini/skills/forge-bootstrap/references/templates/go/go.mod +3 -0
  165. package/adapters/gemini/skills/forge-bootstrap/references/templates/go/main.go +12 -0
  166. package/adapters/gemini/skills/forge-bootstrap/references/templates/go/main_test.go +11 -0
  167. package/adapters/gemini/skills/forge-bootstrap/references/templates/hygiene/AGENTS.md +24 -0
  168. package/adapters/gemini/skills/forge-bootstrap/references/templates/hygiene/CLAUDE.md +25 -0
  169. package/adapters/gemini/skills/forge-bootstrap/references/templates/hygiene/README.md +11 -0
  170. package/adapters/gemini/skills/forge-bootstrap/references/templates/licenses/Apache-2.0/LICENSE +198 -0
  171. package/adapters/gemini/skills/forge-bootstrap/references/templates/licenses/MIT/LICENSE +21 -0
  172. package/adapters/gemini/skills/forge-bootstrap/references/templates/python/pyproject.toml +24 -0
  173. package/adapters/gemini/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/__init__.py +5 -0
  174. package/adapters/gemini/skills/forge-bootstrap/references/templates/python/src/{{PKG}}/main.py +13 -0
  175. package/adapters/gemini/skills/forge-bootstrap/references/templates/python/tests/test_smoke.py +8 -0
  176. package/adapters/gemini/skills/forge-bootstrap/references/templates/rust/Cargo.toml +15 -0
  177. package/adapters/gemini/skills/forge-bootstrap/references/templates/rust/src/lib.rs +7 -0
  178. package/adapters/gemini/skills/forge-bootstrap/references/templates/rust/src/main.rs +5 -0
  179. package/adapters/gemini/skills/forge-bootstrap/references/templates/rust/tests/smoke.rs +6 -0
  180. package/adapters/gemini/skills/forge-bootstrap/references/templates/typescript/package.json +15 -0
  181. package/adapters/gemini/skills/forge-bootstrap/references/templates/typescript/src/index.ts +4 -0
  182. package/adapters/gemini/skills/forge-bootstrap/references/templates/typescript/test/smoke.test.ts +6 -0
  183. package/adapters/gemini/skills/forge-bootstrap/references/templates/typescript/tsconfig.json +14 -0
  184. package/dist/cli.js +15 -2
  185. package/dist/manifest.d.ts +1 -1
  186. package/dist/rauf.d.ts +4 -4
  187. package/dist/rauf.js +3 -3
  188. package/dist/types.d.ts +1 -1
  189. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) {{YEAR}} {{AUTHOR}}
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,24 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "{{PROJECT_NAME}}"
7
+ version = "0.0.0"
8
+ description = "{{PURPOSE}}"
9
+ requires-python = ">=3.10"
10
+ dependencies = []
11
+
12
+ [project.optional-dependencies]
13
+ dev = ["mypy>=1.8", "pytest>=8.0"]
14
+
15
+ [tool.setuptools.packages.find]
16
+ where = ["src"]
17
+
18
+ [tool.mypy]
19
+ files = ["src", "tests"]
20
+ strict = true
21
+
22
+ [tool.pytest.ini_options]
23
+ pythonpath = ["src"]
24
+ testpaths = ["tests"]
@@ -0,0 +1,5 @@
1
+ """Package root for {{PKG}}."""
2
+
3
+ from {{PKG}}.main import greet
4
+
5
+ __all__ = ["greet"]
@@ -0,0 +1,13 @@
1
+ """Entrypoint module."""
2
+
3
+
4
+ def greet(name: str = "world") -> str:
5
+ """Return a greeting for ``name``.
6
+
7
+ Args:
8
+ name: The subject of the greeting.
9
+
10
+ Returns:
11
+ A greeting string.
12
+ """
13
+ return f"Hello from {name}"
@@ -0,0 +1,8 @@
1
+ """Smoke test for the scaffolded baseline."""
2
+
3
+ from {{PKG}}.main import greet
4
+
5
+
6
+ def test_greet() -> None:
7
+ """greet returns the expected greeting."""
8
+ assert greet("world") == "Hello from world"
@@ -0,0 +1,15 @@
1
+ [package]
2
+ name = "{{PKG}}"
3
+ version = "0.0.0"
4
+ edition = "2021"
5
+ description = "{{PURPOSE}}"
6
+
7
+ [lib]
8
+ name = "{{PKG}}"
9
+ path = "src/lib.rs"
10
+
11
+ [[bin]]
12
+ name = "{{PKG}}"
13
+ path = "src/main.rs"
14
+
15
+ [dependencies]
@@ -0,0 +1,7 @@
1
+ //! Library root for the scaffolded baseline.
2
+
3
+ /// Returns the project greeting for `name`.
4
+ #[must_use]
5
+ pub fn greet(name: &str) -> String {
6
+ format!("Hello from {name}")
7
+ }
@@ -0,0 +1,5 @@
1
+ use {{PKG}}::greet;
2
+
3
+ fn main() {
4
+ println!("{}", greet("{{PROJECT_NAME}}"));
5
+ }
@@ -0,0 +1,6 @@
1
+ use {{PKG}}::greet;
2
+
3
+ #[test]
4
+ fn greet_returns_greeting() {
5
+ assert_eq!(greet("world"), "Hello from world");
6
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "{{PROJECT_NAME}}",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "description": "{{PURPOSE}}",
6
+ "type": "module",
7
+ "scripts": {
8
+ "typecheck": "tsc --noEmit",
9
+ "test": "vitest run"
10
+ },
11
+ "devDependencies": {
12
+ "typescript": "^5.4.0",
13
+ "vitest": "^1.6.0"
14
+ }
15
+ }
@@ -0,0 +1,4 @@
1
+ /** Returns the project's greeting. */
2
+ export function greet(name: string = "{{PROJECT_NAME}}"): string {
3
+ return `Hello from ${name}`;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { expect, test } from "vitest";
2
+ import { greet } from "../src/index.js";
3
+
4
+ test("greet returns a greeting", () => {
5
+ expect(greet("world")).toBe("Hello from world");
6
+ });
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Bundler",
6
+ "strict": true,
7
+ "noEmit": true,
8
+ "skipLibCheck": true,
9
+ "esModuleInterop": true,
10
+ "forceConsistentCasingInFileNames": true,
11
+ "types": ["vitest/globals"]
12
+ },
13
+ "include": ["src", "test"]
14
+ }
package/dist/cli.js CHANGED
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { parseArgs } from "node:util";
14
14
  import process from "node:process";
15
- import { readFileSync } from "node:fs";
15
+ import { readFileSync, realpathSync } from "node:fs";
16
16
  import { pathToFileURL } from "node:url";
17
17
  import * as path from "node:path";
18
18
  import { AGENT_IDS, AGENT_TARGETS, EXIT, err, ok, } from "./types.js";
@@ -496,8 +496,21 @@ function readInstallerVersion() {
496
496
  // 8. Process entry shim
497
497
  // ---------------------------------------------------------------------------
498
498
  // Only run when invoked as the bin (not when imported by tests / index.ts).
499
+ // npm/npx install the bin as a SYMLINK (…/bin/feature-forge → …/dist/cli.js), so
500
+ // process.argv[1] is the symlink while import.meta.url is the resolved real path —
501
+ // resolve the symlink before comparing, or the entry point silently no-ops under
502
+ // npx / `npm i -g` (the real invocation paths). Fall back to the raw path if argv[1]
503
+ // is not a stat-able file.
499
504
  const entry = process.argv[1];
500
- if (entry !== undefined && import.meta.url === pathToFileURL(entry).href) {
505
+ function entryHref(p) {
506
+ try {
507
+ return pathToFileURL(realpathSync(p)).href;
508
+ }
509
+ catch {
510
+ return pathToFileURL(p).href;
511
+ }
512
+ }
513
+ if (entry !== undefined && import.meta.url === entryHref(entry)) {
501
514
  main(process.argv.slice(2))
502
515
  .then((code) => {
503
516
  process.exitCode = code;
@@ -28,7 +28,7 @@ export interface BuildManifestArgs {
28
28
  readonly skills: readonly string[];
29
29
  /** SHA-256 over the source bundle's canonical (sorted-path) file set — drift anchor (spec 03). */
30
30
  readonly sourceHash: string;
31
- /** Recorded pinned rauf coordinate (e.g. "@garygentry/rauf@0.7.0"); `null` when `--skip-rauf` (spec 06). */
31
+ /** Recorded pinned rauf coordinate (e.g. "@garygentry/rauf@0.8.0"); `null` when `--skip-rauf` (spec 06). */
32
32
  readonly raufPin: string | null;
33
33
  /** Symlink mode only: the source bundle the namespace dir links to (REQ-SAFE-02). */
34
34
  readonly link?: {
package/dist/rauf.d.ts CHANGED
@@ -19,13 +19,13 @@ import { type Result } from "./types.js";
19
19
  *
20
20
  * Shape: `<name>@<version>` — the SCOPED package `@garygentry/rauf` (the unscoped `rauf` name is
21
21
  * blocked by npm's similarity filter). Advanced on each feature-forge release to a new
22
- * known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.7.0.
22
+ * known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.8.0.
23
23
  *
24
- * rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.7.0` resolves from the npm registry, so the
24
+ * rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.8.0` resolves from the npm registry, so the
25
25
  * preflight below passes by default. (Historically this pin pointed at an unpublished package and
26
26
  * the preflight was a designed-to-fail check — see the `--skip-rauf` escape hatch.)
27
27
  */
28
- export declare const RAUF_PIN = "@garygentry/rauf@0.7.0";
28
+ export declare const RAUF_PIN = "@garygentry/rauf@0.8.0";
29
29
  /**
30
30
  * An injectable, READ-ONLY registry query (D1). Given a coordinate `name@version`, returns the
31
31
  * resolved version string on success, or an `InstallerError` if it is not resolvable.
@@ -37,7 +37,7 @@ export declare const RAUF_PIN = "@garygentry/rauf@0.7.0";
37
37
  * Contract: the query MUST be read-only — it MUST NOT install, MUST NOT mutate global npm
38
38
  * state, and MUST NOT execute rauf. `npm view` satisfies this (it only reads registry metadata).
39
39
  *
40
- * @param coordinate - the `name@version` to resolve, e.g. "@garygentry/rauf@0.7.0"
40
+ * @param coordinate - the `name@version` to resolve, e.g. "@garygentry/rauf@0.8.0"
41
41
  * @returns Result<string> — the resolved version on success; RAUF_UNRESOLVABLE on failure.
42
42
  */
43
43
  export type RegistryQuery = (coordinate: string) => Result<string>;
package/dist/rauf.js CHANGED
@@ -20,13 +20,13 @@ import { err, ok } from "./types.js";
20
20
  *
21
21
  * Shape: `<name>@<version>` — the SCOPED package `@garygentry/rauf` (the unscoped `rauf` name is
22
22
  * blocked by npm's similarity filter). Advanced on each feature-forge release to a new
23
- * known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.7.0.
23
+ * known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.8.0.
24
24
  *
25
- * rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.7.0` resolves from the npm registry, so the
25
+ * rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.8.0` resolves from the npm registry, so the
26
26
  * preflight below passes by default. (Historically this pin pointed at an unpublished package and
27
27
  * the preflight was a designed-to-fail check — see the `--skip-rauf` escape hatch.)
28
28
  */
29
- export const RAUF_PIN = "@garygentry/rauf@0.7.0";
29
+ export const RAUF_PIN = "@garygentry/rauf@0.8.0";
30
30
  /**
31
31
  * Resolvability preflight for the pinned default loop runner (D1; REQ-RAUF-01/02/03, OQ-1).
32
32
  *
package/dist/types.d.ts CHANGED
@@ -124,7 +124,7 @@ export interface InstallManifest {
124
124
  readonly featureForgeVersion: string | null;
125
125
  /** SHA-256 over the source bundle's canonical (sorted-path) file set — drift anchor (OQ-4, spec 03). */
126
126
  readonly sourceHash: string;
127
- /** Pinned rauf coordinate recorded at install, e.g. "@garygentry/rauf@0.7.0"; `null` if `--skip-rauf` (spec 06). */
127
+ /** Pinned rauf coordinate recorded at install, e.g. "@garygentry/rauf@0.8.0"; `null` if `--skip-rauf` (spec 06). */
128
128
  readonly raufPin: string | null;
129
129
  /** ISO-8601 timestamps. */
130
130
  readonly installedAt: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@garygentry/feature-forge",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Cross-agent installer for the feature-forge skill suite — installs the canonical forge pipeline into Claude, Codex, Copilot, Cursor, or Gemini.",
5
5
  "license": "MIT",
6
6
  "type": "module",