create-agdf 0.6.7 → 0.6.8
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 +5 -4
- package/bin/create-agdf.js +46 -12
- package/generated/.opencode/AGDF.md +9 -9
- package/generated/.opencode/README.md +5 -6
- package/generated/.opencode/{agents/agdf-brownfield-analysis.md → skills/agdf-brownfield-analysis/SKILL.md} +4 -5
- package/generated/.opencode/{agents/agdf-clean-implementation-review.md → skills/agdf-clean-implementation-review/SKILL.md} +3 -4
- package/generated/.opencode/{agents/agdf-code-review.md → skills/agdf-code-review/SKILL.md} +3 -4
- package/generated/.opencode/{agents/agdf-delivery-closeout.md → skills/agdf-delivery-closeout/SKILL.md} +3 -4
- package/generated/.opencode/{agents/agdf-delivery-path-search.md → skills/agdf-delivery-path-search/SKILL.md} +3 -4
- package/generated/.opencode/{agents/agdf-gate-check.md → skills/agdf-gate-check/SKILL.md} +3 -4
- package/generated/.opencode/{agents/agdf-qa-gate.md → skills/agdf-qa-gate/SKILL.md} +4 -5
- package/generated/.opencode/{agents/agdf-release-or.md → skills/agdf-release-or/SKILL.md} +4 -5
- package/generated/.opencode/{agents/agdf-task-plan-review.md → skills/agdf-task-plan-review/SKILL.md} +3 -4
- package/generated/opencode.json +4 -1
- package/generated/plugins/agdf/.codex-plugin/plugin.json +1 -1
- package/generated/plugins/agdf/meta/agdf-plugin.definition.json +5 -2
- package/opencode-plugin.js +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,7 +53,7 @@ If no language is provided, `create-agdf` derives the preference from the local
|
|
|
53
53
|
- `copilot` writes `AGENTS.md`, Copilot custom instructions under `.github/`, visible repository skills under `.github/skills/`, and AGDF control templates under `.agdf/control/`
|
|
54
54
|
- `opencode` installs the AGDF npm plugin as a user-wide OpenCode hook
|
|
55
55
|
- `opencode-status` reports OpenCode global config, package loadability, session signals and repository surface presence
|
|
56
|
-
- `opencode-repo` writes `opencode.json`, `.opencode/AGDF.md`, prefixed OpenCode
|
|
56
|
+
- `opencode-repo` writes `opencode.json`, `.opencode/AGDF.md`, prefixed native OpenCode skills under `.opencode/skills/`, explicit edit/bash/skill permissions, and AGDF control templates under `.agdf/control/`
|
|
57
57
|
- `both` writes the Codex repository-local marketplace plus the Copilot-facing repository files
|
|
58
58
|
- `config` writes or updates only `.agdf/control/config.json` for an already installed plugin or an existing repository
|
|
59
59
|
|
|
@@ -76,6 +76,7 @@ npx --yes @agdf/cli@latest opencode-status --json
|
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
The status command reports global configuration, whether `create-agdf` is loadable from the OpenCode config directory, whether the current process exposes AGDF session signals, and whether the current repository has `.opencode/AGDF.md` plus the `agdf-gate-check` surface. It does not infer an active OpenCode session from config alone.
|
|
79
|
+
In JSON schema version 1, `repository_surface.gate_check_agent` remains a deprecated compatibility alias for the native `gate_check_skill` path so existing status consumers keep working during the agent-to-skill migration.
|
|
79
80
|
|
|
80
81
|
Use the `opencode-repo` target when AGDF should be available to OpenCode from repository files:
|
|
81
82
|
|
|
@@ -83,10 +84,10 @@ Use the `opencode-repo` target when AGDF should be available to OpenCode from re
|
|
|
83
84
|
npm create agdf@latest -- opencode-repo
|
|
84
85
|
```
|
|
85
86
|
|
|
86
|
-
OpenCode loads the AGDF npm plugin from global OpenCode config or repository `opencode.json`, AGENTS-style rules from `.opencode/AGDF.md`, explicit `edit`/`bash` permissions and the `agdf-` prefixed
|
|
87
|
-
Those generated
|
|
87
|
+
OpenCode loads the AGDF npm plugin from global OpenCode config or repository `opencode.json`, AGENTS-style rules from `.opencode/AGDF.md`, explicit `edit`/`bash`/`skill` permissions and the `agdf-` prefixed native skills under `.opencode/skills/`. AGDF for OpenCode has two layers: a global npm plugin hook installed with `npx --yes @agdf/cli@latest opencode` and a repository-local governance surface generated by the `opencode-repo` target.
|
|
88
|
+
Those generated skills load on demand through OpenCode's native `skill` tool. Use `agdf-gate-check` first for new build/change intent or unclear approval.
|
|
88
89
|
If `opencode.json` already exists, AGDF keeps it unchanged and writes `opencode.agdf.json` as a merge fragment.
|
|
89
|
-
Using OpenCode's plugin installer or global config for `create-agdf` can add the npm plugin hook, but AGDF still needs the repository instructions and
|
|
90
|
+
Using OpenCode's plugin installer or global config for `create-agdf` can add the npm plugin hook, but AGDF still needs the repository instructions and native skills. The `opencode-repo` target writes the repository files together.
|
|
90
91
|
|
|
91
92
|
## Control scaffold
|
|
92
93
|
|
package/bin/create-agdf.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { execFileSync } from "node:child_process";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import { dirname, join, posix, resolve } from "node:path";
|
|
@@ -173,7 +173,7 @@ const openCodeFiles = [
|
|
|
173
173
|
join(".opencode", pluginDefinition.opencode.instructionsFileName),
|
|
174
174
|
join(".opencode", "README.md"),
|
|
175
175
|
join(".opencode", pluginDefinition.opencode.runtimeContractFileName),
|
|
176
|
-
...openCodeSkillNames.map((skillName) => join(".opencode", "
|
|
176
|
+
...openCodeSkillNames.map((skillName) => join(".opencode", "skills", skillName, "SKILL.md")),
|
|
177
177
|
];
|
|
178
178
|
|
|
179
179
|
function printUsage() {
|
|
@@ -528,7 +528,7 @@ function readOpenCodeConfig(configPath) {
|
|
|
528
528
|
|
|
529
529
|
function isOpenCodeRepositorySurfacePresent(targetDir) {
|
|
530
530
|
return existsSync(join(targetDir, ".opencode", pluginDefinition.opencode.instructionsFileName))
|
|
531
|
-
&& existsSync(join(targetDir, ".opencode", "
|
|
531
|
+
&& existsSync(join(targetDir, ".opencode", "skills", `${pluginDefinition.opencode.skillPrefix}gate-check`, "SKILL.md"));
|
|
532
532
|
}
|
|
533
533
|
|
|
534
534
|
function resolveOpenCodePackage(configDir) {
|
|
@@ -565,6 +565,7 @@ function evaluateOpenCodeStatus(targetDir, configDir = defaultOpenCodeConfigDir(
|
|
|
565
565
|
repository_surface: process.env.AGDF_OPENCODE_REPOSITORY_SURFACE === "1",
|
|
566
566
|
};
|
|
567
567
|
const repositorySurface = isOpenCodeRepositorySurfacePresent(targetDir);
|
|
568
|
+
const gateCheckSkillPath = join(targetDir, ".opencode", "skills", `${pluginDefinition.opencode.skillPrefix}gate-check`, "SKILL.md");
|
|
568
569
|
|
|
569
570
|
const findings = [];
|
|
570
571
|
if (!configState.exists) findings.push("OpenCode global config not found.");
|
|
@@ -594,12 +595,13 @@ function evaluateOpenCodeStatus(targetDir, configDir = defaultOpenCodeConfigDir(
|
|
|
594
595
|
path: targetDir,
|
|
595
596
|
present: repositorySurface,
|
|
596
597
|
instructions: join(targetDir, ".opencode", pluginDefinition.opencode.instructionsFileName),
|
|
597
|
-
gate_check_agent:
|
|
598
|
+
gate_check_agent: gateCheckSkillPath,
|
|
599
|
+
gate_check_skill: gateCheckSkillPath,
|
|
598
600
|
},
|
|
599
|
-
visible_entrypoint: repositorySurface ?
|
|
601
|
+
visible_entrypoint: repositorySurface ? `${pluginDefinition.opencode.skillPrefix}gate-check (native skill)` : "none until opencode-repo is installed for this repository",
|
|
600
602
|
findings,
|
|
601
603
|
next_step: repositorySurface
|
|
602
|
-
? `Restart OpenCode if needed, then
|
|
604
|
+
? `Restart OpenCode if needed, then load ${pluginDefinition.opencode.skillPrefix}gate-check through the native skill tool for new build/change intent.`
|
|
603
605
|
: "Run npx --yes @agdf/cli@latest opencode-repo in repositories where AGDF governance should be active and reviewable.",
|
|
604
606
|
};
|
|
605
607
|
}
|
|
@@ -713,6 +715,29 @@ function writeGeneratedFile(targetDir, relativePath, content, force, allowOverwr
|
|
|
713
715
|
writeFileSync(outputPath, content, "utf8");
|
|
714
716
|
}
|
|
715
717
|
|
|
718
|
+
function removeOwnedLegacyOpenCodeAgents(targetDir) {
|
|
719
|
+
const agentsDir = join(targetDir, ".opencode", "agents");
|
|
720
|
+
if (!existsSync(agentsDir)) return [];
|
|
721
|
+
|
|
722
|
+
const removed = [];
|
|
723
|
+
for (const skill of pluginDefinition.skillSet) {
|
|
724
|
+
const skillName = `${pluginDefinition.opencode.skillPrefix}${skill.slug}`;
|
|
725
|
+
const relativePath = join(".opencode", "agents", `${skillName}.md`);
|
|
726
|
+
const agentPath = join(targetDir, relativePath);
|
|
727
|
+
if (!existsSync(agentPath)) continue;
|
|
728
|
+
|
|
729
|
+
const content = readFileSync(agentPath, "utf8");
|
|
730
|
+
const ownedHeader = `---\ndescription: ${skill.useFor}\nmode: subagent\n---`;
|
|
731
|
+
if (!content.startsWith(ownedHeader) || !content.includes(`# ${skill.slug}`)) continue;
|
|
732
|
+
|
|
733
|
+
rmSync(agentPath);
|
|
734
|
+
removed.push(relativePath);
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
if (readdirSync(agentsDir).length === 0) rmSync(agentsDir, { recursive: true });
|
|
738
|
+
return removed;
|
|
739
|
+
}
|
|
740
|
+
|
|
716
741
|
function assertGeneratedWritePlan(targetDir, files, force) {
|
|
717
742
|
const blocked = files.find((file) => existsSync(join(targetDir, file.path)) && !force && !file.allowOverwrite);
|
|
718
743
|
if (blocked) {
|
|
@@ -873,7 +898,7 @@ function generatedFilesForTarget(target, targetDir, force, languagePreference) {
|
|
|
873
898
|
return files;
|
|
874
899
|
}
|
|
875
900
|
|
|
876
|
-
function printNextSteps(target, destination, files, wroteAgentsFragment, wroteOpenCodeConfigFragment) {
|
|
901
|
+
function printNextSteps(target, destination, files, wroteAgentsFragment, wroteOpenCodeConfigFragment, removedOpenCodeAgents = []) {
|
|
877
902
|
console.log("");
|
|
878
903
|
console.log(`AGDF bootstrap complete in ${destination}`);
|
|
879
904
|
console.log("");
|
|
@@ -883,6 +908,12 @@ function printNextSteps(target, destination, files, wroteAgentsFragment, wroteOp
|
|
|
883
908
|
console.log(`- ${action}${file.path}`);
|
|
884
909
|
}
|
|
885
910
|
|
|
911
|
+
if (removedOpenCodeAgents.length > 0) {
|
|
912
|
+
console.log("");
|
|
913
|
+
console.log("Removed generated legacy OpenCode agents:");
|
|
914
|
+
for (const relativePath of removedOpenCodeAgents) console.log(`- ${relativePath}`);
|
|
915
|
+
}
|
|
916
|
+
|
|
886
917
|
const preservedFiles = [...new Set(files.map((file) => file.preserved).filter(Boolean))];
|
|
887
918
|
if (preservedFiles.length > 0) {
|
|
888
919
|
console.log("");
|
|
@@ -924,10 +955,9 @@ function printNextSteps(target, destination, files, wroteAgentsFragment, wroteOp
|
|
|
924
955
|
}
|
|
925
956
|
console.log(`- OpenCode will install the ${pluginDefinition.opencode.npmPackage} npm plugin from opencode.json at startup.`);
|
|
926
957
|
console.log("- Optional: also add create-agdf to ~/.config/opencode/opencode.json plugin[] for a user-wide OpenCode hook.");
|
|
927
|
-
console.log("- The global hook does not replace repository instructions or
|
|
928
|
-
console.log("- Start OpenCode in this repository; it will load opencode.json, .opencode/AGDF.md and the AGDF
|
|
929
|
-
console.log("-
|
|
930
|
-
console.log("- Use @agdf-gate-check as the visible entry point for new build/change intent or unclear approval before later artefacts or implementation.");
|
|
958
|
+
console.log("- The global hook does not replace repository instructions or native skills; this repository's .opencode files remain the AGDF source of truth.");
|
|
959
|
+
console.log("- Start OpenCode in this repository; it will load opencode.json, .opencode/AGDF.md and the native AGDF skills.");
|
|
960
|
+
console.log("- Load agdf-gate-check through OpenCode's native skill tool for new build/change intent or unclear approval before later artefacts or implementation.");
|
|
931
961
|
console.log("- Run npx --yes @agdf/cli@latest init when the repository needs live AGDF control files.");
|
|
932
962
|
}
|
|
933
963
|
if (target === "copilot" || target === "both") {
|
|
@@ -2481,18 +2511,22 @@ async function main() {
|
|
|
2481
2511
|
const files = generatedFilesForTarget(options.target, options.dir, options.force, options.language);
|
|
2482
2512
|
const wroteAgentsFragment = files.some(file => file.path === agdfFragmentPath);
|
|
2483
2513
|
const wroteOpenCodeConfigFragment = files.some(file => file.path === openCodeConfigFragmentPath);
|
|
2514
|
+
let removedOpenCodeAgents = [];
|
|
2484
2515
|
|
|
2485
2516
|
try {
|
|
2486
2517
|
assertGeneratedWritePlan(options.dir, files, options.force);
|
|
2487
2518
|
for (const file of files) {
|
|
2488
2519
|
writeGeneratedFile(options.dir, file.path, file.content, options.force, file.allowOverwrite);
|
|
2489
2520
|
}
|
|
2521
|
+
if (options.target === "opencode-repo") {
|
|
2522
|
+
removedOpenCodeAgents = removeOwnedLegacyOpenCodeAgents(options.dir);
|
|
2523
|
+
}
|
|
2490
2524
|
} catch (error) {
|
|
2491
2525
|
console.error(error.message);
|
|
2492
2526
|
process.exit(1);
|
|
2493
2527
|
}
|
|
2494
2528
|
|
|
2495
|
-
printNextSteps(options.target, options.dir, files, wroteAgentsFragment, wroteOpenCodeConfigFragment);
|
|
2529
|
+
printNextSteps(options.target, options.dir, files, wroteAgentsFragment, wroteOpenCodeConfigFragment, removedOpenCodeAgents);
|
|
2496
2530
|
}
|
|
2497
2531
|
|
|
2498
2532
|
await main();
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
## Role
|
|
4
4
|
You are operating in an OpenCode project configured with AGDF.
|
|
5
5
|
|
|
6
|
-
Use the AGDF
|
|
6
|
+
Use the native AGDF skills as workflow controls, not as documentation shortcuts.
|
|
7
7
|
Your goal is trustworthy progress: reduce uncertainty, establish evidence, preserve artefacts, verify outcomes and make the next allowed step explicit.
|
|
8
8
|
|
|
9
9
|
## Surface Convention
|
|
10
|
-
OpenCode project
|
|
10
|
+
OpenCode project skills do not have a plugin namespace.
|
|
11
11
|
|
|
12
|
-
Therefore generated OpenCode
|
|
12
|
+
Therefore generated OpenCode skill names use the AGDF prefix:
|
|
13
13
|
|
|
14
14
|
- `agdf-delivery-path-search`
|
|
15
15
|
- `agdf-brownfield-analysis`
|
|
@@ -21,7 +21,7 @@ Therefore generated OpenCode agent names use the AGDF prefix:
|
|
|
21
21
|
- `agdf-release-or`
|
|
22
22
|
- `agdf-task-plan-review`
|
|
23
23
|
|
|
24
|
-
Do not remove that prefix in OpenCode-facing repository
|
|
24
|
+
Do not remove that prefix in OpenCode-facing repository skills.
|
|
25
25
|
Codex and Claude Code plugin surfaces use unprefixed skill names because their plugin namespace already carries `agdf`.
|
|
26
26
|
## Mode Selection
|
|
27
27
|
Default entry rule: a new user intent to build, add, change, extend, refactor or otherwise deliver something starts with `agdf-gate-check` unless it is clearly only a question, explanation, local inspection, or explicitly scoped review.
|
|
@@ -102,12 +102,12 @@ For relevant runs that change durable state, code, artefacts or gate status:
|
|
|
102
102
|
|
|
103
103
|
- OpenCode loads this file through `opencode.json` `instructions`.
|
|
104
104
|
- AGDF for OpenCode has two layers: an optional global npm plugin hook and this repository-local governance surface.
|
|
105
|
-
- The global plugin hook does not replace this file, `.opencode/
|
|
106
|
-
- OpenCode
|
|
107
|
-
- The generated AGDF
|
|
108
|
-
-
|
|
105
|
+
- The global plugin hook does not replace this file, `.opencode/skills/` or `.agdf/control/`; repository files remain the AGDF source of truth.
|
|
106
|
+
- Native OpenCode skills live under `.opencode/skills/` and use the `agdf-` prefix.
|
|
107
|
+
- The generated AGDF skills are loaded on demand through OpenCode's native `skill` tool; they are not parallel subagents or primary menu agents.
|
|
108
|
+
- For new build/change intent or unclear approval, load the `agdf-gate-check` skill before later artefacts or implementation.
|
|
109
109
|
- The AGDF OpenCode plugin is loaded from npm through `opencode.json` `plugin: ["create-agdf"]`.
|
|
110
110
|
- Use `npx --yes @agdf/cli@latest opencode-status --json` to verify global config, package loadability, active session signals and repository surface presence separately.
|
|
111
|
-
- OpenCode permissions keep `edit` and `bash` on explicit approval
|
|
111
|
+
- OpenCode permissions keep `edit` and `bash` on explicit approval and allow the generated `agdf-*` skills explicitly.
|
|
112
112
|
- Shared output and gate rules live in `.opencode/agdf-runtime-contract.md`.
|
|
113
113
|
- Do not paste full control files, templates or artefact bodies into chat unless the user explicitly asks for the full content; summarize and link paths instead.
|
|
@@ -4,16 +4,15 @@ These files were generated from the AGDF source repository for OpenCode.
|
|
|
4
4
|
|
|
5
5
|
- `opencode.json` loads the npm plugin `create-agdf` and `.opencode/AGDF.md` as repository instructions.
|
|
6
6
|
- AGDF for OpenCode has two layers: an optional global npm plugin hook and this repository-local governance surface.
|
|
7
|
-
- The global plugin hook does not replace `.opencode/AGDF.md`, `.opencode/
|
|
8
|
-
- `opencode.json` keeps `edit` and `bash` on `ask`
|
|
9
|
-
- `.opencode/
|
|
10
|
-
-
|
|
11
|
-
- Use `@agdf-gate-check` as the visible entry point for new build/change intent or unclear approval.
|
|
7
|
+
- The global plugin hook does not replace `.opencode/AGDF.md`, `.opencode/skills/` or `.agdf/control/`; repository files remain the AGDF source of truth.
|
|
8
|
+
- `opencode.json` keeps `edit` and `bash` on `ask` and explicitly allows the generated `agdf-*` skills.
|
|
9
|
+
- `.opencode/skills/` contains native OpenCode skills generated from the canonical AGDF skills.
|
|
10
|
+
- For new build/change intent or unclear approval, load `agdf-gate-check` through OpenCode's native `skill` tool.
|
|
12
11
|
- Use `npx --yes @agdf/cli@latest opencode-status --json` to distinguish global hook configuration, package loadability, session activity and this repository surface.
|
|
13
12
|
- Use `npx --yes @agdf/cli@latest gate-check --status-card` for compact interactive gate state; reserve full `--json` output for automation or audit evidence.
|
|
14
13
|
- `.opencode/agdf-runtime-contract.md` is the shared gate and output contract.
|
|
15
14
|
|
|
16
|
-
##
|
|
15
|
+
## Skills
|
|
17
16
|
|
|
18
17
|
- `agdf-brownfield-analysis`
|
|
19
18
|
- `agdf-clean-implementation-review`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-brownfield-analysis
|
|
3
|
+
description: "Use this skill after gate-check or live AGDF control state confirms that Brownfield Review or implementation preparation is allowed. Use it after Approval: UR as the lightweight Brownfield Review after G-00 before PRD when existing systems may be affected, and again before non-trivial implementation after TP. Do not use it as the first AGDF skill for a fresh \"I want to build/change X\" prompt when approval, scope, or next allowed action is unclear."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# brownfield-analysis
|
|
@@ -19,7 +19,7 @@ The skill answers:
|
|
|
19
19
|
- whether Context Graph impact exists without automatically creating a node
|
|
20
20
|
|
|
21
21
|
## Runtime Contract
|
|
22
|
-
Use
|
|
22
|
+
Use `../../agdf-runtime-contract.md` for Quality Contract output, Context Graph fields, gate terms, and non-duplication rules.
|
|
23
23
|
|
|
24
24
|
Brownfield-specific output must make evidence, missing existing-system view, parallel-structure risk, reuse strategy, and the minimal next step visible.
|
|
25
25
|
When `.agdf/control/` is present, persist or link `post_ur_review` output under `.agdf/control/artefacts/<key>/BROWNFIELD_REVIEW.md`.
|
|
@@ -96,7 +96,7 @@ When used as Brownfield Review after `Approval: UR`, do not recommend PRD, SD, T
|
|
|
96
96
|
7. Check SoT/runtime/product-semantics drift.
|
|
97
97
|
8. Check primary visible ownership for UI/status/recovery paths.
|
|
98
98
|
9. Check UI monolith risk for large surfaces or central hooks.
|
|
99
|
-
10. Check Context Graph impact according to
|
|
99
|
+
10. Check Context Graph impact according to `../../agdf-runtime-contract.md`.
|
|
100
100
|
11. Recommend the minimal clean implementation path.
|
|
101
101
|
|
|
102
102
|
## Output
|
|
@@ -134,4 +134,3 @@ This skill must not:
|
|
|
134
134
|
- create Context Graph nodes automatically
|
|
135
135
|
- treat archive links as active current specification signals
|
|
136
136
|
- recommend broad PRD/SD/TP or implementation by reflex before Mode/Slice Decision is recorded
|
|
137
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-clean-implementation-review
|
|
3
|
+
description: Use this skill to determine whether an implementation is a clean primary solution or whether fallbacks, workarounds, guards, defaults, shims, or parallel structures have made it unnecessarily complex. Use it after code changes, before QA, or whenever symptom treatment is suspected.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# clean-implementation-review
|
|
@@ -18,7 +18,7 @@ This skill answers:
|
|
|
18
18
|
- is it maintainable or workaround-heavy
|
|
19
19
|
|
|
20
20
|
## Runtime Contract
|
|
21
|
-
Use
|
|
21
|
+
Use `../../agdf-runtime-contract.md` for Quality Contract output, Context Graph fields, gate terms, and non-duplication rules.
|
|
22
22
|
|
|
23
23
|
Clean-review-specific output must make the primary solution, fallbacks, workarounds, parallel structures, exit criteria, and next cleanup/review step visible.
|
|
24
24
|
|
|
@@ -98,4 +98,3 @@ This skill must not:
|
|
|
98
98
|
- hide unjustified workarounds
|
|
99
99
|
- treat green tests as proof of solution integrity
|
|
100
100
|
- decide final QA
|
|
101
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-code-review
|
|
3
|
+
description: Use this skill after code changes and before QA to produce the mandatory Code Review Report for correctness, regression, security, and maintainability findings in the actual diff. It standardizes the CR step without replacing TP review, clean review, or QA.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# code-review
|
|
@@ -17,7 +17,7 @@ It answers:
|
|
|
17
17
|
- whether Brownfield, TP, or clean-review follow-up remains open
|
|
18
18
|
|
|
19
19
|
## Runtime Contract
|
|
20
|
-
Use
|
|
20
|
+
Use `../../agdf-runtime-contract.md` for Quality Contract output, Context Graph fields, gate terms, and non-duplication rules.
|
|
21
21
|
|
|
22
22
|
Code-review-specific output must make actual findings, missing review scope, evidence strength, and the next required step visible.
|
|
23
23
|
|
|
@@ -92,4 +92,3 @@ This skill must not:
|
|
|
92
92
|
- hide missing review scope
|
|
93
93
|
- generate style-only findings
|
|
94
94
|
- duplicate TP Review or QA as if they were the same step
|
|
95
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-delivery-closeout
|
|
3
|
+
description: Use this skill for the final delivery handoff after QA, OR, or UAT when a run should move toward commit, push, or PR. It standardizes commit-ready summaries, UAT-gated commit offers, and the next delivery step without replacing QA or OR decisions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# delivery-closeout
|
|
@@ -20,7 +20,7 @@ It answers:
|
|
|
20
20
|
This skill does not replace `agdf-qa-gate`, `agdf-release-or`, user approvals, or gate decisions.
|
|
21
21
|
|
|
22
22
|
## Runtime Contract
|
|
23
|
-
Use
|
|
23
|
+
Use `../../agdf-runtime-contract.md` for closeout discipline, gate terms, Context Graph fields, and non-duplication rules.
|
|
24
24
|
|
|
25
25
|
## Rules
|
|
26
26
|
1. Delivery follows gate clarity.
|
|
@@ -112,4 +112,3 @@ This skill must not:
|
|
|
112
112
|
- execute commit, push, or PR
|
|
113
113
|
- invent a commit handoff for non-code runs
|
|
114
114
|
- imply new gate approvals
|
|
115
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-delivery-path-search
|
|
3
|
+
description: Use this skill for high-impact planning decisions when several materially different next delivery steps are plausible and comparing scope, risk, evidence, tests, cost and gate readiness would reduce expensive rework. Do not use for routine tasks, during implementation, or as gate permission.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Delivery Path Search
|
|
@@ -13,7 +13,7 @@ The search is advisory and read-only. Canonical AGDF `agdf-gate-check` remains t
|
|
|
13
13
|
|
|
14
14
|
## Runtime Contract
|
|
15
15
|
|
|
16
|
-
Use
|
|
16
|
+
Use `../../agdf-runtime-contract.md` for canonical gate state, output discipline and Delivery Path Search boundaries. This skill must not maintain a second gate or scoring model.
|
|
17
17
|
|
|
18
18
|
## Trigger
|
|
19
19
|
|
|
@@ -87,4 +87,3 @@ Persist only the redacted decision summary when durable evidence is required. Do
|
|
|
87
87
|
- Do not replace deterministic candidates with generated proposals.
|
|
88
88
|
- Do not send secrets, full artefacts, source snapshots, raw prompts or hidden reasoning to a generator.
|
|
89
89
|
- Do not claim executable generation for instruction-only surfaces.
|
|
90
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-gate-check
|
|
3
|
+
description: Use this skill as the default first AGDF skill for any new build, change, extension, refactor, feature, CLI, app, fix with product semantics, Structured Delivery request, unclear approval, later-gate artefact request, or unclear next permissible step. Use it before brownfield-analysis, implementation, formal artefacts, QA, or release when approval/evidence/next action is not already explicit.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# gate-check
|
|
@@ -18,7 +18,7 @@ Determine the earliest blocking user approval gate and derive:
|
|
|
18
18
|
This skill must not create later artefacts such as PRD, SD, TP, CD, CR, QA, or UAT when the gate does not allow them.
|
|
19
19
|
|
|
20
20
|
## Runtime Contract
|
|
21
|
-
Use
|
|
21
|
+
Use `../../agdf-runtime-contract.md` for gate terms, closeout discipline, and non-duplication rules.
|
|
22
22
|
The canonical gate order and transition model live only in the Runtime Contract. This skill evaluates the current state against that model; it must not maintain a second complete gate table.
|
|
23
23
|
|
|
24
24
|
## Agent-Native Control Path
|
|
@@ -159,4 +159,3 @@ This skill must not:
|
|
|
159
159
|
- paste full `.agdf/control/` files, templates or artefact bodies into the chat unless the user explicitly asks for the full content
|
|
160
160
|
- present QA or UAT as passed without evidence
|
|
161
161
|
- present release as allowed without QA pass and UAT approval where required
|
|
162
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-qa-gate
|
|
3
|
+
description: Use this skill before any QA decision to determine whether implementation can be classified as pass, revise, or block based on TP coverage, Brownfield fit, solution integrity, evidence, and open blockers. Use it after CD+Tests, after reviews, and before UAT or release decisions.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# qa-gate
|
|
@@ -22,7 +22,7 @@ It answers:
|
|
|
22
22
|
- whether blockers, critical risks, or missing evidence remain
|
|
23
23
|
|
|
24
24
|
## Runtime Contract
|
|
25
|
-
Use
|
|
25
|
+
Use `../../agdf-runtime-contract.md` for Quality Contract output, Context Graph fields, gate terms, and non-duplication rules.
|
|
26
26
|
|
|
27
27
|
QA-specific `decision` is exactly `pass | revise | block`.
|
|
28
28
|
`pass` is allowed only when TP coverage, Brownfield fit, solution integrity, and relevant documentation/Context Graph impact are sufficiently evidenced.
|
|
@@ -93,7 +93,7 @@ Use this shape:
|
|
|
93
93
|
- impact_codes:
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
If Context Graph impact is relevant, include the fields from
|
|
96
|
+
If Context Graph impact is relevant, include the fields from `../../agdf-runtime-contract.md`.
|
|
97
97
|
|
|
98
98
|
## Decision Guidance
|
|
99
99
|
- `pass`: required TP tasks are done, evidence is strong, no blocking Brownfield or solution-integrity risk remains.
|
|
@@ -108,4 +108,3 @@ This skill must not:
|
|
|
108
108
|
- replace UAT
|
|
109
109
|
- treat missing reviews as completed
|
|
110
110
|
- downgrade SoT drift to harmless warning
|
|
111
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-release-or
|
|
3
|
+
description: Use this skill at the end of every relevant run to produce a compact, auditable Orchestration Report. It summarizes gate status, delivered and intentionally not delivered work, TP coverage, Brownfield fit, solution integrity, open risks, and the next permissible step.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# release-or
|
|
@@ -25,7 +25,7 @@ It reports:
|
|
|
25
25
|
- whether further quality follow-up or a separate delivery closeout is useful
|
|
26
26
|
|
|
27
27
|
## Runtime Contract
|
|
28
|
-
Use
|
|
28
|
+
Use `../../agdf-runtime-contract.md` for Quality Contract output, Context Graph fields, gate terms, and non-duplication rules.
|
|
29
29
|
|
|
30
30
|
OR-specific output must make gate status, delivered and intentionally not delivered content, missing approvals, missing evidence, risks, retained fallbacks, and the next permissible step visible.
|
|
31
31
|
When `.agdf/control/` is present, persist or link the OR under `.agdf/control/artefacts/<key>/OR.md` and reference it from the selected canonical `RUN_STATE.md` or `MASTER_BACKLOG.md` when it is steering-relevant.
|
|
@@ -117,7 +117,7 @@ Use a compact structure:
|
|
|
117
117
|
- quality_outlook:
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
When Context Graph impact is relevant, include the fields from
|
|
120
|
+
When Context Graph impact is relevant, include the fields from `../../agdf-runtime-contract.md`.
|
|
121
121
|
Include `context_graph_reconciliation` whenever Context Graph impact is present. If the value is `open_gap`, required next step must resolve or explicitly retain that gap before commit-ready or release-ready handoff.
|
|
122
122
|
|
|
123
123
|
## Forbidden
|
|
@@ -129,4 +129,3 @@ This skill must not:
|
|
|
129
129
|
- provide later-gate content while an earlier gate blocks
|
|
130
130
|
- produce the operative commit/PR handoff owned by `agdf-delivery-closeout`
|
|
131
131
|
- execute commit, push, or PR actions
|
|
132
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
name: agdf-task-plan-review
|
|
3
|
+
description: Use this skill after code changes and before QA to verify whether the approved Task Plan was actually fulfilled. It checks each task_id against implementation, acceptance criteria, tests, visible evidence, and deviations, and provides TP coverage for QA.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# task-plan-review
|
|
@@ -19,7 +19,7 @@ For each relevant task, this skill determines:
|
|
|
19
19
|
This skill provides TP coverage. It is not the final QA decision.
|
|
20
20
|
|
|
21
21
|
## Runtime Contract
|
|
22
|
-
Use
|
|
22
|
+
Use `../../agdf-runtime-contract.md` for Quality Contract output, Context Graph fields, gate terms, and non-duplication rules.
|
|
23
23
|
|
|
24
24
|
TP-specific output must evaluate every relevant `task_id` with completion status, AC coverage, evidence, missing evidence, and QA-relevant gaps.
|
|
25
25
|
If `context_graph_required_action` is not `none`, the affected task is complete only if follow-up, evidence, or an intentionally open gap is visible.
|
|
@@ -113,4 +113,3 @@ This skill must not:
|
|
|
113
113
|
- hide partial work
|
|
114
114
|
- upgrade missing evidence into confidence
|
|
115
115
|
- reinterpret the TP scope
|
|
116
|
-
|
package/generated/opencode.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"id": "agdf",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.8",
|
|
5
5
|
"displayName": "AI Governance & Delivery Framework",
|
|
6
6
|
"developerName": "Arndt Gold",
|
|
7
7
|
"description": "Codex-first operating system for governed AI-assisted delivery.",
|
|
@@ -57,7 +57,10 @@
|
|
|
57
57
|
"npmPackage": "create-agdf",
|
|
58
58
|
"permissions": {
|
|
59
59
|
"edit": "ask",
|
|
60
|
-
"bash": "ask"
|
|
60
|
+
"bash": "ask",
|
|
61
|
+
"skill": {
|
|
62
|
+
"agdf-*": "allow"
|
|
63
|
+
}
|
|
61
64
|
}
|
|
62
65
|
},
|
|
63
66
|
"skillSet": [
|
package/opencode-plugin.js
CHANGED
|
@@ -4,7 +4,7 @@ const packageJson = JSON.parse(readFileSync(new URL("./package.json", import.met
|
|
|
4
4
|
|
|
5
5
|
export const AGDFPlugin = async ({ directory, client }) => {
|
|
6
6
|
const controlDir = `${directory}/.agdf/control`;
|
|
7
|
-
const hasRepositorySurface = () => existsSync(`${directory}/.opencode/AGDF.md`) && existsSync(`${directory}/.opencode/
|
|
7
|
+
const hasRepositorySurface = () => existsSync(`${directory}/.opencode/AGDF.md`) && existsSync(`${directory}/.opencode/skills/agdf-gate-check/SKILL.md`);
|
|
8
8
|
const status = () => ({
|
|
9
9
|
active: true,
|
|
10
10
|
version: packageJson.version,
|
|
@@ -40,7 +40,7 @@ export const AGDFPlugin = async ({ directory, client }) => {
|
|
|
40
40
|
output.context.push([
|
|
41
41
|
"## AGDF Plugin Notice",
|
|
42
42
|
"The AGDF OpenCode npm plugin is loaded, but this repository does not contain the AGDF OpenCode surface.",
|
|
43
|
-
"Do not apply AGDF gates from the global plugin alone; repository instructions,
|
|
43
|
+
"Do not apply AGDF gates from the global plugin alone; repository instructions, native skills and control files are the source of truth.",
|
|
44
44
|
"Run `npx --yes @agdf/cli@latest opencode-repo` in this repository when AGDF governance should be active here.",
|
|
45
45
|
].join("\n"));
|
|
46
46
|
return;
|
|
@@ -48,8 +48,8 @@ export const AGDFPlugin = async ({ directory, client }) => {
|
|
|
48
48
|
|
|
49
49
|
output.context.push([
|
|
50
50
|
"## AGDF Runtime Reminder",
|
|
51
|
-
"Use `.opencode/AGDF.md`, `.opencode/
|
|
52
|
-
"For new build/change intent or unclear approval,
|
|
51
|
+
"Use `.opencode/AGDF.md`, `.opencode/skills/` and `.agdf/control/` as the AGDF source for this OpenCode session.",
|
|
52
|
+
"For new build/change intent or unclear approval, load the native `agdf-gate-check` skill before later artefacts or implementation.",
|
|
53
53
|
"Use `npx --yes @agdf/cli@latest gate-check --status-card` for compact interactive status. Use `--json` only as deterministic proof for automation or audit evidence, and summarize it instead of mirroring full JSON into chat.",
|
|
54
54
|
].join("\n"));
|
|
55
55
|
},
|
package/package.json
CHANGED