create-agdf 0.2.9 → 0.3.1

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
@@ -4,6 +4,19 @@ Bootstrap AGDF repository instructions and a machine-checkable control loop for
4
4
 
5
5
  ## Usage
6
6
 
7
+ Preferred long-term CLI shape:
8
+
9
+ ```bash
10
+ npx --yes @agdf-runtime/cli@latest codex
11
+ npx --yes @agdf-runtime/cli@latest opencode
12
+ npx --yes @agdf-runtime/cli@latest init
13
+ npx --yes @agdf-runtime/cli@latest config --language en
14
+ npx --yes @agdf-runtime/cli@latest doctor
15
+ npx --yes @agdf-runtime/cli@latest gate-check --json
16
+ ```
17
+
18
+ Backward-compatible scaffold usage:
19
+
7
20
  ```bash
8
21
  npm create agdf@latest -- codex
9
22
  npm create agdf@latest -- copilot
@@ -136,6 +149,8 @@ The routing test installs `both` into a temporary target repository and checks t
136
149
 
137
150
  The repository publishes this package from `create-agdf/` via the GitHub Actions workflow `.github/workflows/publish-create-agdf.yml`.
138
151
 
152
+ The primary user-facing CLI package is published separately from `agdf/` and delegates to this package through the shared `create-agdf/cli` export.
153
+
139
154
  - Create or update the version in `create-agdf/package.json`
140
155
  - Push a matching git tag in the form `create-agdf-v<version>`
141
156
  - Ensure the repository secret `NPM_TOKEN` exists with publish rights for `create-agdf`
@@ -124,7 +124,14 @@ const openCodeFiles = [
124
124
  function printUsage() {
125
125
  console.log(`create-agdf
126
126
 
127
- Usage:
127
+ Preferred AGDF CLI:
128
+ npx --yes @agdf-runtime/cli@latest codex
129
+ npx --yes @agdf-runtime/cli@latest opencode
130
+ npx --yes @agdf-runtime/cli@latest init
131
+ npx --yes @agdf-runtime/cli@latest doctor
132
+ npx --yes @agdf-runtime/cli@latest gate-check --json
133
+
134
+ Scaffold-compatible npm create usage:
128
135
  npm create agdf@latest -- codex
129
136
  npm create agdf@latest -- copilot
130
137
  npm create agdf@latest -- opencode
@@ -135,6 +142,10 @@ Usage:
135
142
  npm create agdf@latest -- gate-check
136
143
  npm create agdf@latest -- delivery-map
137
144
 
145
+ Backward-compatible create-agdf usage:
146
+ npx --yes create-agdf@latest doctor --json
147
+ npx --yes create-agdf@latest gate-check --json
148
+
138
149
  Options:
139
150
  --dir <path> Write files into a specific directory
140
151
  --force Overwrite existing generated files
@@ -428,13 +439,13 @@ function printNextSteps(target, destination, files, wroteAgentsFragment, wroteOp
428
439
  }
429
440
  if (target === "init") {
430
441
  console.log("- Fill .agdf/control/AGDF_RUN.md with the current gate, evidence and next allowed action.");
431
- console.log("- Run npm create agdf@latest -- doctor to check the control state before the next agent run.");
442
+ console.log("- Run npx --yes @agdf-runtime/cli@latest doctor to check the control state before the next agent run.");
432
443
  console.log("- Commit the live control files once they represent the repository's current delivery state.");
433
444
  return;
434
445
  }
435
446
  if (target === "config") {
436
447
  console.log("- Restart or start a new agent session so the AGDF SessionStart hook reads the updated project language config.");
437
- console.log("- Run npm create agdf@latest -- doctor when this repository also uses durable AGDF control state.");
448
+ console.log("- Run npx --yes @agdf-runtime/cli@latest doctor when this repository also uses durable AGDF control state.");
438
449
  return;
439
450
  }
440
451
  if (wroteAgentsFragment) {
@@ -454,11 +465,11 @@ function printNextSteps(target, destination, files, wroteAgentsFragment, wroteOp
454
465
  console.log(`- OpenCode will install the ${pluginDefinition.opencode.npmPackage} npm plugin from opencode.json at startup.`);
455
466
  console.log("- Start OpenCode in this repository; it will load opencode.json, .opencode/AGDF.md and the AGDF subagents.");
456
467
  console.log("- Use @agdf-gate-check for new build/change intent or unclear approval before later artefacts or implementation.");
457
- console.log("- Run npm create agdf@latest -- init when the repository needs live AGDF control files.");
468
+ console.log("- Run npx --yes @agdf-runtime/cli@latest init when the repository needs live AGDF control files.");
458
469
  }
459
470
  if (target === "copilot" || target === "both") {
460
471
  console.log("- In GitHub Copilot CLI, run /instructions after the AGENTS.md step is complete to confirm that AGDF instructions and the repository skills are visible.");
461
- console.log("- Run npm create agdf@latest -- init when the repository needs live AGDF control files.");
472
+ console.log("- Run npx --yes @agdf-runtime/cli@latest init when the repository needs live AGDF control files.");
462
473
  }
463
474
  console.log("- Commit the generated files so the repository becomes the source of truth.");
464
475
  }
@@ -562,7 +573,7 @@ function evaluateDoctor(targetDir) {
562
573
  ? "Live control file is missing; only the template exists."
563
574
  : "Required live control file is missing.",
564
575
  relativePath,
565
- "Run npm create agdf@latest -- init only when the repository should own durable AGDF control state or deterministic setup is explicitly needed.",
576
+ "Run npx --yes @agdf-runtime/cli@latest init only when the repository should own durable AGDF control state or deterministic setup is explicitly needed.",
566
577
  );
567
578
  }
568
579
 
@@ -1177,7 +1188,7 @@ function evaluateGateCheck(targetDir) {
1177
1188
  allowed = [
1178
1189
  "draft the minimal UR for the requested change in the response",
1179
1190
  "request exact approval: Approval: UR",
1180
- "run npm create agdf@latest -- init only when durable control state or deterministic setup is explicitly needed",
1191
+ "run npx --yes @agdf-runtime/cli@latest init only when durable control state or deterministic setup is explicitly needed",
1181
1192
  ];
1182
1193
  forbidden = ["create PRD", "create SD", "create TP", "run Brownfield Analysis", "implement code", "claim QA or release readiness"];
1183
1194
  nextAllowedAction = "Draft the minimal UR for the request in the response, then ask for exact approval: Approval: UR. Do not write a full .agdf/control scaffold unless durable control state or deterministic setup is explicitly needed.";
@@ -49,21 +49,21 @@ Keep these files small and reviewable. They are control artefacts, not a second
49
49
  Create the live files with:
50
50
 
51
51
  ```bash
52
- npm create agdf@latest -- init
52
+ npx --yes @agdf-runtime/cli@latest init
53
53
  ```
54
54
 
55
55
  If only the project language preference is missing or should change after plugin installation, write just the config file:
56
56
 
57
57
  ```bash
58
- npm create agdf@latest -- config --language en
58
+ npx --yes @agdf-runtime/cli@latest config --language en
59
59
  ```
60
60
 
61
61
  Then check whether the live state is actionable:
62
62
 
63
63
  ```bash
64
- npm create agdf@latest -- doctor
65
- npx --yes create-agdf@latest doctor --json
66
- npx --yes create-agdf@latest gate-check --json
64
+ npx --yes @agdf-runtime/cli@latest doctor
65
+ npx --yes @agdf-runtime/cli@latest doctor --json
66
+ npx --yes @agdf-runtime/cli@latest gate-check --json
67
67
  ```
68
68
 
69
69
  `doctor` does not replace agent judgment. It catches basic control failures: missing live files, missing current gate, missing next allowed action, empty evidence, empty backlog pointer, empty source-of-truth registry, duplicate active SoT rows and invalid quality contracts.
@@ -41,10 +41,10 @@ Use `init` only when the user explicitly asks for durable AGDF control state, th
41
41
  Use the executable control path when a machine-readable check is requested, when the gate state is ambiguous, when CI or PR evidence is needed, or when a repository-local automation needs JSON output:
42
42
 
43
43
  ```bash
44
- npm create agdf@latest -- init
45
- npx --yes create-agdf@latest doctor --json
46
- npx --yes create-agdf@latest gate-check --json
47
- npx --yes create-agdf@latest delivery-map --json
44
+ npx --yes @agdf-runtime/cli@latest init
45
+ npx --yes @agdf-runtime/cli@latest doctor --json
46
+ npx --yes @agdf-runtime/cli@latest gate-check --json
47
+ npx --yes @agdf-runtime/cli@latest delivery-map --json
48
48
  ```
49
49
 
50
50
  `init` creates the control scaffold. `doctor` checks whether `.agdf/control/` is actionable. `agdf-gate-check` consumes that result and `AGDF_RUN.md` to report the operative process decision: `open | blocked`, current gate, blocking reason, missing approval, allowed outputs, forbidden outputs, next allowed action and evidence references.
@@ -46,10 +46,10 @@ Use `init` only when the user explicitly asks for durable AGDF control state, th
46
46
  Use the executable control path when a machine-readable check is requested, when the gate state is ambiguous, when CI or PR evidence is needed, or when a repository-local automation needs JSON output:
47
47
 
48
48
  ```bash
49
- npm create agdf@latest -- init
50
- npx --yes create-agdf@latest doctor --json
51
- npx --yes create-agdf@latest gate-check --json
52
- npx --yes create-agdf@latest delivery-map --json
49
+ npx --yes @agdf-runtime/cli@latest init
50
+ npx --yes @agdf-runtime/cli@latest doctor --json
51
+ npx --yes @agdf-runtime/cli@latest gate-check --json
52
+ npx --yes @agdf-runtime/cli@latest delivery-map --json
53
53
  ```
54
54
 
55
55
  `init` creates the control scaffold. `doctor` checks whether `.agdf/control/` is actionable. `agdf-gate-check` consumes that result and `AGDF_RUN.md` to report the operative process decision: `open | blocked`, current gate, blocking reason, missing approval, allowed outputs, forbidden outputs, next allowed action and evidence references.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agdf",
3
- "version": "0.2.9",
3
+ "version": "0.3.1",
4
4
  "description": "Codex-first workflow skills for gated, auditable AI-assisted software delivery.",
5
5
  "author": {
6
6
  "name": "AI-native Governance & Delivery Framework",
@@ -20,6 +20,8 @@
20
20
  "category": "Productivity",
21
21
  "capabilities": ["Read", "Write"],
22
22
  "websiteURL": "https://agdf.iself.eu",
23
+ "composerIcon": "./assets/agdf-icon.svg",
24
+ "logo": "./assets/agdf-logo.svg",
23
25
  "defaultPrompt": [
24
26
  "Run an AGDF gate check for this request.",
25
27
  "Create an AGDF control scaffold for this repository.",
@@ -0,0 +1,16 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="AGDF">
2
+ <defs>
3
+ <linearGradient id="agdf-bg" x1="10" y1="6" x2="54" y2="58" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#0F766E"/>
5
+ <stop offset="1" stop-color="#2563EB"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="64" height="64" rx="14" fill="#06131F"/>
9
+ <rect x="4" y="4" width="56" height="56" rx="12" fill="url(#agdf-bg)"/>
10
+ <path d="M32 10.5 50 21v22L32 53.5 14 43V21L32 10.5Z" fill="none" stroke="#ECFEFF" stroke-width="5" stroke-linejoin="round"/>
11
+ <path d="M32 21v13m0 0-10 6m10-6 10 6" fill="none" stroke="#ECFEFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
12
+ <circle cx="32" cy="21" r="5.3" fill="#ECFEFF"/>
13
+ <circle cx="32" cy="34" r="5.6" fill="#ECFEFF"/>
14
+ <circle cx="22" cy="40" r="5.3" fill="#ECFEFF"/>
15
+ <circle cx="42" cy="40" r="5.3" fill="#ECFEFF"/>
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="AGDF">
2
+ <defs>
3
+ <linearGradient id="agdf-logo-bg" x1="80" y1="48" x2="432" y2="464" gradientUnits="userSpaceOnUse">
4
+ <stop offset="0" stop-color="#0F766E"/>
5
+ <stop offset="1" stop-color="#2563EB"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="512" height="512" rx="112" fill="#06131F"/>
9
+ <rect x="32" y="32" width="448" height="448" rx="96" fill="url(#agdf-logo-bg)"/>
10
+ <path d="M256 84 400 168v176L256 428 112 344V168L256 84Z" fill="none" stroke="#ECFEFF" stroke-width="40" stroke-linejoin="round"/>
11
+ <path d="M256 168v104m0 0-80 48m80-48 80 48" fill="none" stroke="#ECFEFF" stroke-width="32" stroke-linecap="round" stroke-linejoin="round"/>
12
+ <circle cx="256" cy="168" r="42" fill="#ECFEFF"/>
13
+ <circle cx="256" cy="272" r="45" fill="#ECFEFF"/>
14
+ <circle cx="176" cy="320" r="42" fill="#ECFEFF"/>
15
+ <circle cx="336" cy="320" r="42" fill="#ECFEFF"/>
16
+ </svg>
@@ -49,21 +49,21 @@ Keep these files small and reviewable. They are control artefacts, not a second
49
49
  Create the live files with:
50
50
 
51
51
  ```bash
52
- npm create agdf@latest -- init
52
+ npx --yes @agdf-runtime/cli@latest init
53
53
  ```
54
54
 
55
55
  If only the project language preference is missing or should change after plugin installation, write just the config file:
56
56
 
57
57
  ```bash
58
- npm create agdf@latest -- config --language en
58
+ npx --yes @agdf-runtime/cli@latest config --language en
59
59
  ```
60
60
 
61
61
  Then check whether the live state is actionable:
62
62
 
63
63
  ```bash
64
- npm create agdf@latest -- doctor
65
- npx --yes create-agdf@latest doctor --json
66
- npx --yes create-agdf@latest gate-check --json
64
+ npx --yes @agdf-runtime/cli@latest doctor
65
+ npx --yes @agdf-runtime/cli@latest doctor --json
66
+ npx --yes @agdf-runtime/cli@latest gate-check --json
67
67
  ```
68
68
 
69
69
  `doctor` does not replace agent judgment. It catches basic control failures: missing live files, missing current gate, missing next allowed action, empty evidence, empty backlog pointer, empty source-of-truth registry, duplicate active SoT rows and invalid quality contracts.
@@ -8,7 +8,7 @@ ROUTER="${META_DIR}/agdf-agent-router.md"
8
8
  CONSTITUTION="${META_DIR}/agdf-constitution.md"
9
9
  CONFIG_PATH="${PWD}/.agdf/control/config.json"
10
10
 
11
- CONFIG_HINT="Project config: .agdf/control/config.json not found. Use npm create agdf@latest -- config --language de|en to persist the project language."
11
+ CONFIG_HINT="Project config: .agdf/control/config.json not found. Use npx --yes @agdf-runtime/cli@latest config --language de|en to persist the project language."
12
12
  if [[ -f "${CONFIG_PATH}" ]]; then
13
13
  CONFIG_HINT="$(CONFIG_PATH="${CONFIG_PATH}" node <<'NODE' 2>/dev/null || true
14
14
  const fs = require("node:fs");
@@ -20,7 +20,7 @@ try {
20
20
  const runtime = config.runtime_language || "en";
21
21
  console.log(`Project config: .agdf/control/config.json (artefacts=${artefacts}, chat=${chat}, runtime=${runtime}).`);
22
22
  } catch {
23
- console.log("Project config: .agdf/control/config.json exists but is not valid JSON. Run npm create agdf@latest -- doctor.");
23
+ console.log("Project config: .agdf/control/config.json exists but is not valid JSON. Run npx --yes @agdf-runtime/cli@latest doctor.");
24
24
  }
25
25
  NODE
26
26
  )"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "id": "agdf",
4
- "version": "0.2.9",
4
+ "version": "0.3.1",
5
5
  "displayName": "AI Governance & Delivery Framework",
6
6
  "developerName": "AI-native Governance & Delivery Framework",
7
7
  "description": "Codex-first workflow skills for gated, auditable AI-assisted software delivery.",
@@ -22,6 +22,8 @@
22
22
  "skills": "./skills/",
23
23
  "skillPrefix": "",
24
24
  "agentRouter": "meta/agdf-agent-router.md",
25
+ "composerIcon": "./assets/agdf-icon.svg",
26
+ "logo": "./assets/agdf-logo.svg",
25
27
  "capabilities": ["Read", "Write"],
26
28
  "defaultPrompt": [
27
29
  "Run an AGDF gate check for this request.",
@@ -41,10 +41,10 @@ Use `init` only when the user explicitly asks for durable AGDF control state, th
41
41
  Use the executable control path when a machine-readable check is requested, when the gate state is ambiguous, when CI or PR evidence is needed, or when a repository-local automation needs JSON output:
42
42
 
43
43
  ```bash
44
- npm create agdf@latest -- init
45
- npx --yes create-agdf@latest doctor --json
46
- npx --yes create-agdf@latest gate-check --json
47
- npx --yes create-agdf@latest delivery-map --json
44
+ npx --yes @agdf-runtime/cli@latest init
45
+ npx --yes @agdf-runtime/cli@latest doctor --json
46
+ npx --yes @agdf-runtime/cli@latest gate-check --json
47
+ npx --yes @agdf-runtime/cli@latest delivery-map --json
48
48
  ```
49
49
 
50
50
  `init` creates the control scaffold. `doctor` checks whether `.agdf/control/` is actionable. `gate-check` consumes that result and `AGDF_RUN.md` to report the operative process decision: `open | blocked`, current gate, blocking reason, missing approval, allowed outputs, forbidden outputs, next allowed action and evidence references.
@@ -24,7 +24,7 @@ export const AGDFPlugin = async ({ directory, client }) => {
24
24
  "## AGDF Runtime Reminder",
25
25
  "Use `.opencode/AGDF.md`, `.opencode/agents/` and `.agdf/control/` as the AGDF source for this OpenCode session.",
26
26
  "For new build/change intent or unclear approval, route first to `agdf-gate-check` before later artefacts or implementation.",
27
- "Use `npx --yes create-agdf@latest gate-check --json` only as deterministic proof, not as a replacement for AGDF judgement.",
27
+ "Use `npx --yes @agdf-runtime/cli@latest gate-check --json` only as deterministic proof, not as a replacement for AGDF judgement.",
28
28
  ].join("\n"));
29
29
  },
30
30
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-agdf",
3
- "version": "0.2.9",
3
+ "version": "0.3.1",
4
4
  "description": "Bootstrap AGDF repository-local plugin files, Copilot/OpenCode instructions, skills, control files and machine-readable checks.",
5
5
  "type": "module",
6
6
  "files": [
@@ -12,6 +12,7 @@
12
12
  ],
13
13
  "exports": {
14
14
  ".": "./opencode-plugin.js",
15
+ "./cli": "./bin/create-agdf.js",
15
16
  "./opencode-plugin": "./opencode-plugin.js"
16
17
  },
17
18
  "bin": {