gcf-harness-aif-ext 0.2.0 → 0.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.
package/README.md CHANGED
@@ -6,17 +6,44 @@ The harness turns policy-as-text into an executable pipeline. It has **no memory
6
6
 
7
7
  ## Requirements
8
8
 
9
- - [`gcf-aif-ext`](../gcf-aif-ext) `^0.2.0` installed, with a `gcf/` tree in the project — declared as a peer dependency, and `gcf-harness install` refuses when the `gcf` command is not registered
9
+ - [`gcf-aif-ext`](../gcf-aif-ext) `^0.2.0` installed, with a `gcf/` tree in the project — declared as a peer dependency, and `gcf-harness init` refuses when the `gcf` command is not registered
10
10
  - Claude Code 2.1.270+ (hooks, dynamic workflows)
11
11
  - AI Factory 2.x, Node.js ≥ 22.14
12
12
 
13
13
  ## Install
14
14
 
15
+ Install into a project that already has the core, from npm or a local checkout:
16
+
17
+ ```bash
18
+ ai-factory extension add gcf-aif-ext # the core, if not yet installed
19
+ ai-factory extension add gcf-harness-aif-ext # npm
20
+ # ai-factory extension add ../GCF/packages/gcf-harness-aif-ext # local checkout
21
+ ```
22
+
23
+ This installs the `gcf-run` and `gcf-run-ingest` skills and registers the `gcf-harness` command. Then initialize the harness in the project — like `gcf init`, once per project:
24
+
25
+ ```bash
26
+ ai-factory gcf-harness init # per project: .claude/settings.json + .gitignore
27
+ ```
28
+
29
+ It is **per project**, not global — run it again in every game repository: it adds the readset-guard `PreToolUse` entry to the project's `.claude/settings.json` (never `~/.claude`) and `.gcf-session/` to `.gitignore`. It is idempotent, refuses when the `gcf` command is not registered, and refuses to rewrite a `settings.json` it cannot parse. It is a separate step for the same reason as `gcf hooks-install`: an AI Factory manifest cannot install Claude Code hooks.
30
+
31
+ ## Upgrade
32
+
33
+ ```bash
34
+ ai-factory extension update gcf-harness-aif-ext
35
+ ```
36
+
37
+ Updating keeps the hook entry valid — it points into the extension's install directory, which an update refreshes in place.
38
+
39
+ To remove the extension:
40
+
15
41
  ```bash
16
- ai-factory extension add <path-to>/packages/gcf-harness-aif-ext
17
- ai-factory gcf-harness install # registers the readset-guard hook
42
+ ai-factory extension remove gcf-harness-aif-ext
18
43
  ```
19
44
 
45
+ Removal does not touch `.claude/settings.json`: delete the `PreToolUse` entry whose command ends in `# gcf-readset-guard` by hand, or every Read, Grep and Glob will report a hook error.
46
+
20
47
  ## What it adds
21
48
 
22
49
  **`/gcf-run <card-id…>`** — drives a card from the backlog to `built`, with every gate checked *before* the tokens are spent: the audit ritual, collapsed dependencies, the tune limit, the WIP cap, the context budget. It stops at `built` and prints the playtest list — the verdict belongs to the human, and there is no stage past the build.
@@ -1,4 +1,4 @@
1
- // `ai-factory gcf-harness install` — registers the readset-guard PreToolUse hook in the
1
+ // `ai-factory gcf-harness init` — registers the readset-guard PreToolUse hook in the
2
2
  // project's .claude/settings.json (the AIF manifest cannot install Claude Code hooks —
3
3
  // same decision as gcf hooks-install for git hooks). Idempotent by marker comment.
4
4
  import { readFile, writeFile, mkdir, appendFile } from 'node:fs/promises';
@@ -23,8 +23,8 @@ function coreMissing(program) {
23
23
  export function register(program) {
24
24
  const harness = program.command('gcf-harness').description('GCF harness setup');
25
25
 
26
- harness.command('install')
27
- .description('Register the readset-guard hook in .claude/settings.json (idempotent)')
26
+ harness.command('init')
27
+ .description('Initialize the harness in this project: readset-guard hook in .claude/settings.json (idempotent)')
28
28
  .action(async () => {
29
29
  if (coreMissing(program)) {
30
30
  throw new Error('gcf-aif-ext is not installed: the harness drives `ai-factory gcf …` — run `ai-factory extension add gcf-aif-ext` first');
package/extension.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/lee-to/ai-factory/2.x/schemas/extension.schema.json",
3
3
  "name": "gcf-harness-aif-ext",
4
- "version": "0.2.0",
4
+ "version": "0.3.0",
5
5
  "description": "GCF orchestration harness for Claude Code: one-command card pipeline, readset guard",
6
6
  "skills": [
7
7
  "skills/gcf-run",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gcf-harness-aif-ext",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "GCF orchestration harness for Claude Code: one-command card pipeline, readset guard",
5
5
  "type": "module",
6
6
  "license": "MIT",