@csark0812/skeleton 1.5.7 → 1.6.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 +13 -8
- package/dist/cli.js +1749 -701
- package/dist/hooks/customize-on-skill-read.js +961 -223
- package/dist/plugin-types.d.ts +19 -3
- package/package.json +3 -6
- package/schemas/config.schema.json +57 -9
- package/templates/skeleton-init/config.yaml +5 -4
- package/templates/skeleton-init/skeleton.toml +37 -0
- package/templates/skeleton-init/registry.md +0 -10
package/dist/plugin-types.d.ts
CHANGED
|
@@ -75,19 +75,32 @@ export type MatchedPolicyEntry = CompiledPolicyEntry & { policyName: string };
|
|
|
75
75
|
export interface ScanConfig {
|
|
76
76
|
include: string[];
|
|
77
77
|
exclude: string[];
|
|
78
|
-
banned: string[];
|
|
79
|
-
retiredSkills?: string[];
|
|
80
78
|
nonPublicSkills?: string[];
|
|
81
79
|
}
|
|
82
80
|
|
|
81
|
+
export interface DenyConfig {
|
|
82
|
+
paths?: string[];
|
|
83
|
+
}
|
|
84
|
+
|
|
83
85
|
export interface CustomizeConfig {
|
|
84
86
|
alwaysInclude?: string[];
|
|
85
87
|
}
|
|
86
88
|
|
|
89
|
+
export interface DocsLintConfig {
|
|
90
|
+
nearDuplicateThreshold?: number;
|
|
91
|
+
ssotOverlapMin?: number;
|
|
92
|
+
ssotBetterMatchMargin?: number;
|
|
93
|
+
ssotPhraseCheck?: boolean;
|
|
94
|
+
ignorePairs?: [string, string][];
|
|
95
|
+
ignoreGlobs?: string[];
|
|
96
|
+
}
|
|
97
|
+
|
|
87
98
|
export interface SkeletonConfig {
|
|
88
99
|
scan: ScanConfig;
|
|
89
100
|
daysUntilStale: number;
|
|
101
|
+
deny?: DenyConfig;
|
|
90
102
|
customize?: CustomizeConfig;
|
|
103
|
+
docsLint?: DocsLintConfig;
|
|
91
104
|
plugins?: string[];
|
|
92
105
|
draftPathPrefixes?: string[];
|
|
93
106
|
}
|
|
@@ -107,9 +120,12 @@ export interface AuditContext {
|
|
|
107
120
|
config: SkeletonConfig;
|
|
108
121
|
files: string[];
|
|
109
122
|
docMetaPaths: string[];
|
|
123
|
+
ssotEntries: Array<{ path: string; summary: string; form: string }>;
|
|
124
|
+
ssotErrors: Array<{ path: string; kind: string; detail: string }>;
|
|
125
|
+
/** @deprecated Prefer ssotEntries */
|
|
110
126
|
registryPaths: string[];
|
|
127
|
+
/** @deprecated Always false */
|
|
111
128
|
registryHasTableHeader: boolean;
|
|
112
|
-
retiredSkills: Set<string>;
|
|
113
129
|
skillIndex: SkillIndex;
|
|
114
130
|
policies: PolicyFile[];
|
|
115
131
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@csark0812/skeleton",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "SSOT audit CLI for agent harness repos",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -63,20 +63,17 @@
|
|
|
63
63
|
"github-slugger": "^2.0.0",
|
|
64
64
|
"remark": "^15.0.1",
|
|
65
65
|
"remark-gfm": "^4.0.1",
|
|
66
|
+
"smol-toml": "^1.8.0",
|
|
66
67
|
"tinyglobby": "^0.2.14",
|
|
67
68
|
"unist-util-visit": "^5.0.0",
|
|
68
69
|
"yaml": "^2.8.0"
|
|
69
70
|
},
|
|
70
71
|
"devDependencies": {
|
|
71
|
-
"@biomejs/biome": "2.5.
|
|
72
|
+
"@biomejs/biome": "^2.5.3",
|
|
72
73
|
"@cursor/sdk": "^1.0.23",
|
|
73
74
|
"@post-print/agent-test": "^0.2.7",
|
|
74
75
|
"@types/bun": "^1.3.8",
|
|
75
76
|
"@types/github-slugger": "^2.0.0",
|
|
76
77
|
"typescript": "~7.0.2"
|
|
77
|
-
},
|
|
78
|
-
"overrides": {
|
|
79
|
-
"undici": ">=6.23.0",
|
|
80
|
-
"fast-uri": ">=3.1.4"
|
|
81
78
|
}
|
|
82
79
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"scan": {
|
|
10
10
|
"type": "object",
|
|
11
11
|
"additionalProperties": false,
|
|
12
|
-
"required": ["include", "exclude"
|
|
12
|
+
"required": ["include", "exclude"],
|
|
13
13
|
"properties": {
|
|
14
14
|
"include": {
|
|
15
15
|
"type": "array",
|
|
@@ -20,14 +20,6 @@
|
|
|
20
20
|
"type": "array",
|
|
21
21
|
"items": { "type": "string" }
|
|
22
22
|
},
|
|
23
|
-
"banned": {
|
|
24
|
-
"type": "array",
|
|
25
|
-
"items": { "type": "string" }
|
|
26
|
-
},
|
|
27
|
-
"retiredSkills": {
|
|
28
|
-
"type": "array",
|
|
29
|
-
"items": { "type": "string", "pattern": "^[a-z0-9-]+$" }
|
|
30
|
-
},
|
|
31
23
|
"nonPublicSkills": {
|
|
32
24
|
"type": "array",
|
|
33
25
|
"items": { "type": "string", "pattern": "^[a-z0-9-]+$" },
|
|
@@ -35,10 +27,66 @@
|
|
|
35
27
|
}
|
|
36
28
|
}
|
|
37
29
|
},
|
|
30
|
+
"deny": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"description": "Path denylist — matching files must not exist in the repo",
|
|
34
|
+
"properties": {
|
|
35
|
+
"paths": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"items": { "type": "string" },
|
|
38
|
+
"description": "Repo-wide globs that must not exist (often outside scan.include)"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
38
42
|
"daysUntilStale": {
|
|
39
43
|
"type": "integer",
|
|
40
44
|
"minimum": 1
|
|
41
45
|
},
|
|
46
|
+
"docsLint": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"additionalProperties": false,
|
|
49
|
+
"description": "Near-duplicate and SSOT-summary lint tunables",
|
|
50
|
+
"properties": {
|
|
51
|
+
"nearDuplicateThreshold": {
|
|
52
|
+
"type": "number",
|
|
53
|
+
"minimum": 0,
|
|
54
|
+
"maximum": 1,
|
|
55
|
+
"description": "Jaccard threshold on word shingles (default 0.72)"
|
|
56
|
+
},
|
|
57
|
+
"ssotOverlapMin": {
|
|
58
|
+
"type": "number",
|
|
59
|
+
"minimum": 0,
|
|
60
|
+
"maximum": 1,
|
|
61
|
+
"description": "Min fraction of SSOT tokens that must appear in H1/lead/body evidence (default 0.35)"
|
|
62
|
+
},
|
|
63
|
+
"ssotBetterMatchMargin": {
|
|
64
|
+
"type": "number",
|
|
65
|
+
"minimum": 0,
|
|
66
|
+
"maximum": 1,
|
|
67
|
+
"description": "Margin by which another file must beat own overlap for better-match warn (default 0.15)"
|
|
68
|
+
},
|
|
69
|
+
"ssotPhraseCheck": {
|
|
70
|
+
"type": "boolean",
|
|
71
|
+
"description": "When overlap fails, mention missing SSOT phrase in the message (default true)"
|
|
72
|
+
},
|
|
73
|
+
"ignorePairs": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": {
|
|
76
|
+
"type": "array",
|
|
77
|
+
"items": { "type": "string", "minLength": 1 },
|
|
78
|
+
"minItems": 2,
|
|
79
|
+
"maxItems": 2
|
|
80
|
+
},
|
|
81
|
+
"description": "Repo-relative path pairs skipped by near-dupe / duplicate-SSOT checks"
|
|
82
|
+
},
|
|
83
|
+
"ignoreGlobs": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": { "type": "string", "minLength": 1 },
|
|
86
|
+
"description": "Globs excluded from near-dupe / duplicate-SSOT"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
42
90
|
"customize": {
|
|
43
91
|
"type": "object",
|
|
44
92
|
"additionalProperties": false,
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
# yaml-language-server: $schema=node_modules/@csark0812/skeleton/schemas/config.schema.json
|
|
2
|
+
# Legacy path — prefer skeleton.toml at repo root.
|
|
2
3
|
|
|
3
4
|
scan:
|
|
4
5
|
include:
|
|
5
6
|
- "docs/**"
|
|
6
7
|
- "README.md"
|
|
7
|
-
- ".skeleton/registry.md"
|
|
8
8
|
- "AGENTS.md"
|
|
9
9
|
exclude:
|
|
10
10
|
- "refs/**"
|
|
11
|
-
banned: []
|
|
12
|
-
retiredSkills: []
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
deny:
|
|
13
|
+
paths: []
|
|
14
|
+
|
|
15
|
+
daysUntilStale: 365
|
|
15
16
|
|
|
16
17
|
# Optional: basenames under .skeleton/customize/ appended on every skill inject
|
|
17
18
|
# customize:
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# https://github.com/csark0812/skeleton — root config (preferred over .skeleton/config.yaml)
|
|
2
|
+
|
|
3
|
+
daysUntilStale = 365
|
|
4
|
+
|
|
5
|
+
[scan]
|
|
6
|
+
include = [
|
|
7
|
+
"docs/**",
|
|
8
|
+
"README.md",
|
|
9
|
+
"AGENTS.md",
|
|
10
|
+
]
|
|
11
|
+
exclude = [
|
|
12
|
+
"refs/**",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
[deny]
|
|
16
|
+
paths = []
|
|
17
|
+
|
|
18
|
+
# Optional: basenames under .skeleton/customize/ appended on every skill inject
|
|
19
|
+
# [customize]
|
|
20
|
+
# alwaysInclude = ["shared-agent-references.md"]
|
|
21
|
+
|
|
22
|
+
# Optional: near-dupe / SSOT-summary tunables
|
|
23
|
+
# [docsLint]
|
|
24
|
+
# nearDuplicateThreshold = 0.72
|
|
25
|
+
# ssotOverlapMin = 0.35
|
|
26
|
+
# ignoreGlobs = ["docs/changelog/**"]
|
|
27
|
+
|
|
28
|
+
# Optional: skill body ownership (skills-lock.json github entries are foreign by default)
|
|
29
|
+
# [skillOwnership]
|
|
30
|
+
# lockfile = "skills-lock.json"
|
|
31
|
+
# ownedSlugs = []
|
|
32
|
+
# foreignSlugs = []
|
|
33
|
+
|
|
34
|
+
# Optional: plugin `.ts` entries relative to .skeleton/ (built sibling `.mjs` required)
|
|
35
|
+
# plugins = []
|
|
36
|
+
# Optional: draft-marker allow-list prefixes (plus `_draft-*.md` filenames)
|
|
37
|
+
# draftPathPrefixes = []
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Registry
|
|
2
|
-
|
|
3
|
-
<!-- doc-meta: owner=eng | last-reviewed=2026-07-11 -->
|
|
4
|
-
|
|
5
|
-
**Source of truth for** topic routing in this repo. Edit rows here; edit content in canonical files only.
|
|
6
|
-
|
|
7
|
-
## Documentation
|
|
8
|
-
|
|
9
|
-
| Topic | Canonical file |
|
|
10
|
-
|-------|------------------|
|