@aicf/agent-skills 1.0.0-rc.4 → 1.0.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/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +2 -2
- package/package.json +3 -2
- package/scripts/check-release-install.mjs +140 -0
- package/scripts/check-release-readiness.mjs +6 -2
- package/skills/aicf-action-lifecycle/SKILL.md +1 -1
- package/skills/aicf-capability-authoring/SKILL.md +1 -1
- package/skills/aicf-control-plane-ui/SKILL.md +1 -1
- package/skills/aicf-controls-and-budgets/SKILL.md +1 -1
- package/skills/aicf-docs-and-examples/SKILL.md +1 -1
- package/skills/aicf-eval-authoring/SKILL.md +1 -1
- package/skills/aicf-governance-lifecycle/SKILL.md +1 -1
- package/skills/aicf-migration/SKILL.md +1 -1
- package/skills/aicf-observability-replay/SKILL.md +1 -1
- package/skills/aicf-policy-and-risk/SKILL.md +1 -1
- package/skills/aicf-provider-conformance/SKILL.md +1 -1
- package/skills/aicf-release-hygiene/SKILL.md +1 -1
- package/skills/aicf-runtime-integration/SKILL.md +1 -1
- package/skills/aicf-security-redteam/SKILL.md +1 -1
- package/skills/aicf-skill-pack-maintenance/SKILL.md +1 -1
- package/skills/aicf-skill-pack-maintenance/assets/skill-template.md +1 -1
- package/skills/aicf-storage-and-aws/SKILL.md +1 -1
- package/skills/aicf-trust-redaction-retention/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
All notable public changes to the AICF Agent Skills package are documented here.
|
|
4
4
|
|
|
5
|
-
## 1.0.0
|
|
5
|
+
## 1.0.0 - Unreleased
|
|
6
6
|
|
|
7
7
|
- Aligned the skills package, Codex plugin manifest, and all real skill metadata with
|
|
8
|
-
the AICF `1.0.0
|
|
8
|
+
the AICF `1.0.0` stable release.
|
|
9
9
|
- Added public publish metadata for `@aicf/agent-skills` and documented the
|
|
10
10
|
same-version, same-tag release process with the root package.
|
|
11
11
|
- Added S6 release hardening: stale index checks, release-readiness assertions, stricter
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aicf/agent-skills",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Agent Skills for building, integrating, testing, auditing, and releasing AICF-based AI capability systems.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"check:index": "node scripts/generate-skill-index.mjs ./skills ./docs/skill-index.md --check",
|
|
46
46
|
"test": "node --test tests/*.test.mjs",
|
|
47
47
|
"check:release": "node scripts/check-release-readiness.mjs",
|
|
48
|
-
"check": "
|
|
48
|
+
"check:release-install": "node scripts/check-release-install.mjs",
|
|
49
|
+
"check": "npm run validate && npm run check:triggers && npm run check:index && npm run test && npm run check:public && npm run check:release && npm run check:release-install",
|
|
49
50
|
"pack:dry": "npm pack --dry-run"
|
|
50
51
|
},
|
|
51
52
|
"engines": {
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { execFileSync } from "node:child_process";
|
|
3
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
4
|
+
import { mkdir, mkdtemp, rm } from "node:fs/promises";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import {
|
|
8
|
+
expectedSkillNames,
|
|
9
|
+
forbiddenPathFailures,
|
|
10
|
+
normalizePath,
|
|
11
|
+
packageRoot
|
|
12
|
+
} from "./lib/skill-common.mjs";
|
|
13
|
+
|
|
14
|
+
const root = packageRoot();
|
|
15
|
+
const keepTmp = process.env.AICF_KEEP_TMP === "1";
|
|
16
|
+
const npmExecPath = process.env.npm_execpath;
|
|
17
|
+
const npmCommand = npmExecPath ? process.execPath : process.platform === "win32" ? "npm.cmd" : "npm";
|
|
18
|
+
const npmArgs = (...args) => npmExecPath ? [npmExecPath, ...args] : args;
|
|
19
|
+
let tempDirectory;
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
tempDirectory = await mkdtemp(path.join(tmpdir(), "aicf-agent-skills-release-install-"));
|
|
23
|
+
const packDirectory = path.join(tempDirectory, "pack");
|
|
24
|
+
const consumerDirectory = path.join(tempDirectory, "consumer");
|
|
25
|
+
await mkdir(packDirectory, { recursive: true });
|
|
26
|
+
await mkdir(consumerDirectory, { recursive: true });
|
|
27
|
+
|
|
28
|
+
execFileSync(npmCommand, npmArgs("pack", "--pack-destination", packDirectory, "--json"), {
|
|
29
|
+
cwd: root,
|
|
30
|
+
encoding: "utf8",
|
|
31
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const tarball = readdirSync(packDirectory)
|
|
35
|
+
.filter((file) => file.endsWith(".tgz"))
|
|
36
|
+
.map((file) => path.join(packDirectory, file))[0];
|
|
37
|
+
if (!tarball) {
|
|
38
|
+
throw new Error("npm pack did not produce an agent-skills tarball.");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
execFileSync(npmCommand, npmArgs("init", "-y"), {
|
|
42
|
+
cwd: consumerDirectory,
|
|
43
|
+
stdio: "ignore"
|
|
44
|
+
});
|
|
45
|
+
execFileSync(npmCommand, npmArgs("install", "--omit=dev", tarball), {
|
|
46
|
+
cwd: consumerDirectory,
|
|
47
|
+
stdio: "pipe"
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const listOutput = execFileSync(npmCommand, npmArgs("exec", "--", "aicf-skills", "list"), {
|
|
51
|
+
cwd: consumerDirectory,
|
|
52
|
+
encoding: "utf8",
|
|
53
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
for (const skillName of expectedSkillNames) {
|
|
57
|
+
if (!listOutput.includes(`${skillName}\t`)) {
|
|
58
|
+
throw new Error(`Installed aicf-skills list output is missing ${skillName}.`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
execFileSync(process.execPath, [
|
|
63
|
+
"--input-type=module",
|
|
64
|
+
"-e",
|
|
65
|
+
`
|
|
66
|
+
import { createRequire } from "node:module";
|
|
67
|
+
const require = createRequire(import.meta.url);
|
|
68
|
+
const pkg = require("@aicf/agent-skills/package.json");
|
|
69
|
+
if (pkg.name !== "@aicf/agent-skills") throw new Error("Unexpected installed package name.");
|
|
70
|
+
if (!pkg.bin?.["aicf-skills"]) throw new Error("Missing installed aicf-skills bin metadata.");
|
|
71
|
+
`
|
|
72
|
+
], {
|
|
73
|
+
cwd: consumerDirectory,
|
|
74
|
+
stdio: "pipe"
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const installedRoot = path.join(consumerDirectory, "node_modules", "@aicf", "agent-skills");
|
|
78
|
+
const requiredFiles = [
|
|
79
|
+
".codex-plugin/plugin.json",
|
|
80
|
+
"skills/README.md",
|
|
81
|
+
"README.md",
|
|
82
|
+
"LICENSE",
|
|
83
|
+
"scripts/aicf-skills.mjs"
|
|
84
|
+
];
|
|
85
|
+
for (const file of requiredFiles) {
|
|
86
|
+
if (!existsSync(path.join(installedRoot, file))) {
|
|
87
|
+
throw new Error(`Installed package missing required file: ${file}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const installedFiles = walkFiles(installedRoot).map((file) => normalizePath(path.relative(installedRoot, file)));
|
|
92
|
+
for (const skillName of expectedSkillNames) {
|
|
93
|
+
if (!installedFiles.includes(`skills/${skillName}/SKILL.md`)) {
|
|
94
|
+
throw new Error(`Installed package missing skill file: skills/${skillName}/SKILL.md`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
for (const file of installedFiles) {
|
|
99
|
+
const lower = file.toLowerCase();
|
|
100
|
+
if (
|
|
101
|
+
file.startsWith("tests/")
|
|
102
|
+
|| file.includes("/tests/")
|
|
103
|
+
|| file.startsWith("node_modules/")
|
|
104
|
+
|| file.includes("/node_modules/")
|
|
105
|
+
|| lower.includes("provider-payload")
|
|
106
|
+
|| lower.includes("raw-payload")
|
|
107
|
+
|| lower.includes(`raw-${"prompt"}`)
|
|
108
|
+
|| lower.includes("raw-trace")
|
|
109
|
+
|| /(^|\/)traces?(\/|$)/u.test(lower)
|
|
110
|
+
|| /(^|\/)prompts?(\/|$)/u.test(lower)
|
|
111
|
+
|| lower.endsWith(".log")
|
|
112
|
+
) {
|
|
113
|
+
throw new Error(`Installed package contains forbidden file: ${file}`);
|
|
114
|
+
}
|
|
115
|
+
const forbidden = forbiddenPathFailures(file, "installed package");
|
|
116
|
+
if (forbidden.length > 0) {
|
|
117
|
+
throw new Error(forbidden.join("\n"));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
console.log(`Agent skills release install smoke test passed in ${consumerDirectory}.`);
|
|
122
|
+
} finally {
|
|
123
|
+
if (!keepTmp && tempDirectory) {
|
|
124
|
+
await rm(tempDirectory, { recursive: true, force: true });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function walkFiles(directory) {
|
|
129
|
+
const files = [];
|
|
130
|
+
if (!existsSync(directory)) return files;
|
|
131
|
+
for (const entry of readdirSync(directory, { withFileTypes: true })) {
|
|
132
|
+
const fullPath = path.join(directory, entry.name);
|
|
133
|
+
if (entry.isDirectory()) {
|
|
134
|
+
files.push(...walkFiles(fullPath));
|
|
135
|
+
} else if (entry.isFile()) {
|
|
136
|
+
files.push(fullPath);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return files;
|
|
140
|
+
}
|
|
@@ -51,7 +51,8 @@ function checkPackageMetadata() {
|
|
|
51
51
|
"scripts/generate-skill-index.mjs",
|
|
52
52
|
"scripts/install-skills.mjs",
|
|
53
53
|
"scripts/aicf-skills.mjs",
|
|
54
|
-
"scripts/check-release-readiness.mjs"
|
|
54
|
+
"scripts/check-release-readiness.mjs",
|
|
55
|
+
"scripts/check-release-install.mjs"
|
|
55
56
|
]) {
|
|
56
57
|
requireFile(rel);
|
|
57
58
|
}
|
|
@@ -64,6 +65,7 @@ function checkPackageMetadata() {
|
|
|
64
65
|
"check:index": "node scripts/generate-skill-index.mjs ./skills ./docs/skill-index.md --check",
|
|
65
66
|
test: "node --test tests/*.test.mjs",
|
|
66
67
|
"check:release": "node scripts/check-release-readiness.mjs",
|
|
68
|
+
"check:release-install": "node scripts/check-release-install.mjs",
|
|
67
69
|
"pack:dry": "npm pack --dry-run"
|
|
68
70
|
};
|
|
69
71
|
for (const [scriptName, expected] of Object.entries(requiredScripts)) {
|
|
@@ -71,6 +73,7 @@ function checkPackageMetadata() {
|
|
|
71
73
|
}
|
|
72
74
|
expect(String(pkg.scripts?.check ?? "").includes("npm run check:index"), "package.json: check must include check:index.");
|
|
73
75
|
expect(String(pkg.scripts?.check ?? "").includes("npm run check:release"), "package.json: check must include check:release.");
|
|
76
|
+
expect(String(pkg.scripts?.check ?? "").includes("npm run check:release-install"), "package.json: check must include check:release-install.");
|
|
74
77
|
|
|
75
78
|
for (const requiredFileEntry of [".codex-plugin", "skills", "scripts", "docs", "assets", "README.md", "LICENSE", "CHANGELOG.md"]) {
|
|
76
79
|
expect(pkg.files?.includes(requiredFileEntry), `package.json: files must include ${requiredFileEntry}.`);
|
|
@@ -156,7 +159,8 @@ function checkPackContents() {
|
|
|
156
159
|
"assets/aicf-agent-skills-icon.svg",
|
|
157
160
|
"assets/aicf-agent-skills-logo.svg",
|
|
158
161
|
"scripts/aicf-skills.mjs",
|
|
159
|
-
"scripts/check-release-readiness.mjs"
|
|
162
|
+
"scripts/check-release-readiness.mjs",
|
|
163
|
+
"scripts/check-release-install.mjs"
|
|
160
164
|
];
|
|
161
165
|
|
|
162
166
|
for (const skillName of expectedSkillNames) {
|
|
@@ -8,7 +8,7 @@ compatibility:
|
|
|
8
8
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
9
9
|
migrating to AICF.
|
|
10
10
|
metadata:
|
|
11
|
-
aicf.skill.version: "1.0.0
|
|
11
|
+
aicf.skill.version: "1.0.0"
|
|
12
12
|
aicf.skill.package: "@aicf/agent-skills"
|
|
13
13
|
aicf.skill.category: "action-lifecycle"
|
|
14
14
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "capability-authoring"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "control-plane-ui"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -8,7 +8,7 @@ compatibility:
|
|
|
8
8
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
9
9
|
migrating to AICF.
|
|
10
10
|
metadata:
|
|
11
|
-
aicf.skill.version: "1.0.0
|
|
11
|
+
aicf.skill.version: "1.0.0"
|
|
12
12
|
aicf.skill.package: "@aicf/agent-skills"
|
|
13
13
|
aicf.skill.category: "controls-budgets"
|
|
14
14
|
aicf.skill.scope: "builder"
|
|
@@ -8,7 +8,7 @@ compatibility:
|
|
|
8
8
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
9
9
|
migrating to AICF.
|
|
10
10
|
metadata:
|
|
11
|
-
aicf.skill.version: "1.0.0
|
|
11
|
+
aicf.skill.version: "1.0.0"
|
|
12
12
|
aicf.skill.package: "@aicf/agent-skills"
|
|
13
13
|
aicf.skill.category: "docs-examples"
|
|
14
14
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "evals"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "governance"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "migration"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "observability-replay"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "policy-risk"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "provider-conformance"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "release-hygiene"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "runtime"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "security-redteam"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "skill-pack-maintenance"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -6,7 +6,7 @@ compatibility:
|
|
|
6
6
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
7
7
|
migrating to AICF.
|
|
8
8
|
metadata:
|
|
9
|
-
aicf.skill.version: "1.0.0
|
|
9
|
+
aicf.skill.version: "1.0.0"
|
|
10
10
|
aicf.skill.package: "@aicf/agent-skills"
|
|
11
11
|
aicf.skill.category: "example"
|
|
12
12
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF. AWS work must remain optional and subpath-isolated.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "storage-aws"
|
|
15
15
|
aicf.skill.scope: "builder"
|
|
@@ -9,7 +9,7 @@ compatibility:
|
|
|
9
9
|
Codex and Agent Skills-compatible coding agents. Works in repositories using AICF or
|
|
10
10
|
migrating to AICF.
|
|
11
11
|
metadata:
|
|
12
|
-
aicf.skill.version: "1.0.0
|
|
12
|
+
aicf.skill.version: "1.0.0"
|
|
13
13
|
aicf.skill.package: "@aicf/agent-skills"
|
|
14
14
|
aicf.skill.category: "trust-redaction-retention"
|
|
15
15
|
aicf.skill.scope: "builder"
|