create-agdf 0.2.9 → 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 +15 -0
- package/bin/create-agdf.js +18 -7
- package/generated/.agdf/control/README.md +5 -5
- package/generated/.github/skills/agdf-gate-check/SKILL.md +4 -4
- package/generated/.opencode/agents/agdf-gate-check.md +4 -4
- package/generated/plugins/agdf/.codex-plugin/plugin.json +3 -1
- package/generated/plugins/agdf/assets/agdf-icon.svg +16 -0
- package/generated/plugins/agdf/assets/agdf-logo.svg +16 -0
- package/generated/plugins/agdf/control/README.md +5 -5
- package/generated/plugins/agdf/hooks/session-start.sh +2 -2
- package/generated/plugins/agdf/meta/agdf-plugin.definition.json +3 -1
- package/generated/plugins/agdf/skills/gate-check/SKILL.md +4 -4
- package/opencode-plugin.js +1 -1
- package/package.json +2 -1
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@latest codex
|
|
11
|
+
npx --yes agdf@latest opencode
|
|
12
|
+
npx --yes agdf@latest init
|
|
13
|
+
npx --yes agdf@latest config --language en
|
|
14
|
+
npx --yes agdf@latest doctor
|
|
15
|
+
npx --yes agdf@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`
|
package/bin/create-agdf.js
CHANGED
|
@@ -124,7 +124,14 @@ const openCodeFiles = [
|
|
|
124
124
|
function printUsage() {
|
|
125
125
|
console.log(`create-agdf
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
Preferred AGDF CLI:
|
|
128
|
+
npx --yes agdf@latest codex
|
|
129
|
+
npx --yes agdf@latest opencode
|
|
130
|
+
npx --yes agdf@latest init
|
|
131
|
+
npx --yes agdf@latest doctor
|
|
132
|
+
npx --yes agdf@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
|
|
442
|
+
console.log("- Run npx --yes agdf@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
|
|
448
|
+
console.log("- Run npx --yes agdf@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
|
|
468
|
+
console.log("- Run npx --yes agdf@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
|
|
472
|
+
console.log("- Run npx --yes agdf@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
|
|
576
|
+
"Run npx --yes agdf@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
|
|
1191
|
+
"run npx --yes agdf@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
|
-
|
|
52
|
+
npx --yes agdf@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
|
-
|
|
58
|
+
npx --yes agdf@latest config --language en
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
Then check whether the live state is actionable:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
|
|
65
|
-
npx --yes
|
|
66
|
-
npx --yes
|
|
64
|
+
npx --yes agdf@latest doctor
|
|
65
|
+
npx --yes agdf@latest doctor --json
|
|
66
|
+
npx --yes agdf@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
|
-
|
|
45
|
-
npx --yes
|
|
46
|
-
npx --yes
|
|
47
|
-
npx --yes
|
|
44
|
+
npx --yes agdf@latest init
|
|
45
|
+
npx --yes agdf@latest doctor --json
|
|
46
|
+
npx --yes agdf@latest gate-check --json
|
|
47
|
+
npx --yes agdf@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
|
-
|
|
50
|
-
npx --yes
|
|
51
|
-
npx --yes
|
|
52
|
-
npx --yes
|
|
49
|
+
npx --yes agdf@latest init
|
|
50
|
+
npx --yes agdf@latest doctor --json
|
|
51
|
+
npx --yes agdf@latest gate-check --json
|
|
52
|
+
npx --yes agdf@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.
|
|
3
|
+
"version": "0.3.0",
|
|
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
|
-
|
|
52
|
+
npx --yes agdf@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
|
-
|
|
58
|
+
npx --yes agdf@latest config --language en
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
Then check whether the live state is actionable:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
|
|
65
|
-
npx --yes
|
|
66
|
-
npx --yes
|
|
64
|
+
npx --yes agdf@latest doctor
|
|
65
|
+
npx --yes agdf@latest doctor --json
|
|
66
|
+
npx --yes agdf@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
|
|
11
|
+
CONFIG_HINT="Project config: .agdf/control/config.json not found. Use npx --yes agdf@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
|
|
23
|
+
console.log("Project config: .agdf/control/config.json exists but is not valid JSON. Run npx --yes agdf@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.
|
|
4
|
+
"version": "0.3.0",
|
|
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
|
-
|
|
45
|
-
npx --yes
|
|
46
|
-
npx --yes
|
|
47
|
-
npx --yes
|
|
44
|
+
npx --yes agdf@latest init
|
|
45
|
+
npx --yes agdf@latest doctor --json
|
|
46
|
+
npx --yes agdf@latest gate-check --json
|
|
47
|
+
npx --yes agdf@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.
|
package/opencode-plugin.js
CHANGED
|
@@ -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
|
|
27
|
+
"Use `npx --yes agdf@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.
|
|
3
|
+
"version": "0.3.0",
|
|
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": {
|