vigiles 2.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/.claude/settings.json +46 -0
- package/.claude/settings.local.json +8 -0
- package/.claude-plugin/hooks/post-edit.sh +34 -0
- package/.claude-plugin/hooks/pre-edit.sh +40 -0
- package/.claude-plugin/hooks/session-start.sh +38 -0
- package/.claude-plugin/marketplace.json +14 -0
- package/.claude-plugin/plugin.json +47 -0
- package/.github/workflows/ci.yml +81 -0
- package/.prettierignore +1 -0
- package/.vigiles/generated.d.ts +205 -0
- package/CLAUDE.md +95 -0
- package/CLAUDE.md.spec.ts +142 -0
- package/CONTRIBUTING.md +121 -0
- package/LICENSE +21 -0
- package/README.md +377 -0
- package/action.yml +25 -0
- package/dist/action.d.ts +7 -0
- package/dist/action.d.ts.map +1 -0
- package/dist/action.js +180 -0
- package/dist/action.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1267 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.test.d.ts +2 -0
- package/dist/cli.test.d.ts.map +1 -0
- package/dist/cli.test.js +650 -0
- package/dist/cli.test.js.map +1 -0
- package/dist/compile.d.ts +101 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +503 -0
- package/dist/compile.js.map +1 -0
- package/dist/evolve.d.ts +132 -0
- package/dist/evolve.d.ts.map +1 -0
- package/dist/evolve.js +599 -0
- package/dist/evolve.js.map +1 -0
- package/dist/freshness.d.ts +67 -0
- package/dist/freshness.d.ts.map +1 -0
- package/dist/freshness.js +244 -0
- package/dist/freshness.js.map +1 -0
- package/dist/freshness.test.d.ts +2 -0
- package/dist/freshness.test.d.ts.map +1 -0
- package/dist/freshness.test.js +356 -0
- package/dist/freshness.test.js.map +1 -0
- package/dist/generate-types.d.ts +34 -0
- package/dist/generate-types.d.ts.map +1 -0
- package/dist/generate-types.js +381 -0
- package/dist/generate-types.js.map +1 -0
- package/dist/inline.d.ts +58 -0
- package/dist/inline.d.ts.map +1 -0
- package/dist/inline.js +142 -0
- package/dist/inline.js.map +1 -0
- package/dist/inline.test.d.ts +5 -0
- package/dist/inline.test.d.ts.map +1 -0
- package/dist/inline.test.js +152 -0
- package/dist/inline.test.js.map +1 -0
- package/dist/linters.d.ts +38 -0
- package/dist/linters.d.ts.map +1 -0
- package/dist/linters.js +588 -0
- package/dist/linters.js.map +1 -0
- package/dist/proofs.d.ts +272 -0
- package/dist/proofs.d.ts.map +1 -0
- package/dist/proofs.js +622 -0
- package/dist/proofs.js.map +1 -0
- package/dist/proofs.test.d.ts +9 -0
- package/dist/proofs.test.d.ts.map +1 -0
- package/dist/proofs.test.js +952 -0
- package/dist/proofs.test.js.map +1 -0
- package/dist/spec.d.ts +258 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +113 -0
- package/dist/spec.js.map +1 -0
- package/dist/spec.test.d.ts +2 -0
- package/dist/spec.test.d.ts.map +1 -0
- package/dist/spec.test.js +1222 -0
- package/dist/spec.test.js.map +1 -0
- package/dist/types.d.ts +101 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +10 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +286 -0
- package/dist/validate.js.map +1 -0
- package/dist/validate.test.d.ts +2 -0
- package/dist/validate.test.d.ts.map +1 -0
- package/dist/validate.test.js +531 -0
- package/dist/validate.test.js.map +1 -0
- package/docs/agent-setup.md +85 -0
- package/docs/agent-workflows.md +103 -0
- package/docs/comparison.md +71 -0
- package/docs/freshness.md +124 -0
- package/docs/inline-mode.md +119 -0
- package/docs/linter-support.md +166 -0
- package/docs/spec-format.md +194 -0
- package/eslint.config.mjs +79 -0
- package/examples/CLAUDE.md +54 -0
- package/examples/CLAUDE.md.spec.ts +65 -0
- package/examples/SKILL.md +50 -0
- package/examples/SKILL.md.spec.ts +57 -0
- package/fixtures/example-project/CLAUDE.md +11 -0
- package/fixtures/example-project/package.json +9 -0
- package/fixtures/example-project/src/index.ts +3 -0
- package/fixtures/example-project/src/utils.test.ts +2 -0
- package/fixtures/example-project/src/utils.ts +3 -0
- package/logo.png +0 -0
- package/package.json +42 -0
- package/research/adoption-strategy.md +111 -0
- package/research/agent-integration.md +145 -0
- package/research/ai-code-quality.md +197 -0
- package/research/code-search-for-agents.md +313 -0
- package/research/competitive-landscape.md +163 -0
- package/research/doc-freshness.md +516 -0
- package/research/executable-specs.md +368 -0
- package/research/feature-ideas.md +464 -0
- package/research/formal-proofs-for-agents.md +338 -0
- package/research/fp-for-agent-harness.md +150 -0
- package/research/fp-for-deterministic-ai.md +131 -0
- package/research/self-evolving-specs.md +298 -0
- package/schemas/claude-md-strict.yml +18 -0
- package/schemas/claude-md.yml +6 -0
- package/schemas/skill-strict.yml +12 -0
- package/schemas/skill.yml +5 -0
- package/skills/audit-feedback-loop/SKILL.md +76 -0
- package/skills/edit-spec/SKILL.md +131 -0
- package/skills/enforce-rules-format/SKILL.md +71 -0
- package/skills/generate-logo/SKILL.md +102 -0
- package/skills/generate-rule/SKILL.md +90 -0
- package/skills/linter-docs/clippy.md +241 -0
- package/skills/linter-docs/eslint.md +384 -0
- package/skills/linter-docs/pylint.md +288 -0
- package/skills/linter-docs/rubocop.md +277 -0
- package/skills/linter-docs/ruff.md +187 -0
- package/skills/linter-docs/stylelint.md +247 -0
- package/skills/migrate-to-spec/SKILL.md +124 -0
- package/skills/pr-to-lint-rule/SKILL.md +97 -0
- package/skills/strengthen/SKILL.md +168 -0
- package/src/action.ts +214 -0
- package/src/cli.test.ts +914 -0
- package/src/cli.ts +1631 -0
- package/src/compile.ts +691 -0
- package/src/evolve.ts +781 -0
- package/src/freshness.test.ts +449 -0
- package/src/freshness.ts +299 -0
- package/src/generate-types.ts +448 -0
- package/src/inline.test.ts +206 -0
- package/src/inline.ts +164 -0
- package/src/linters.ts +739 -0
- package/src/proofs.test.ts +1314 -0
- package/src/proofs.ts +849 -0
- package/src/spec.test.ts +1471 -0
- package/src/spec.ts +427 -0
- package/src/types.ts +117 -0
- package/src/validate.test.ts +701 -0
- package/src/validate.ts +381 -0
- package/tsconfig.json +23 -0
package/action.yml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: "vigiles"
|
|
2
|
+
description: "Compile typed specs to instruction files and verify integrity"
|
|
3
|
+
branding:
|
|
4
|
+
icon: "check-circle"
|
|
5
|
+
color: "orange"
|
|
6
|
+
|
|
7
|
+
inputs:
|
|
8
|
+
command:
|
|
9
|
+
description: "Command to run: 'compile' or 'audit' (default: audit)"
|
|
10
|
+
required: false
|
|
11
|
+
default: "audit"
|
|
12
|
+
paths:
|
|
13
|
+
description: "Comma-separated paths to .spec.ts files (compile) or .md files (audit). Auto-discovers by default."
|
|
14
|
+
required: false
|
|
15
|
+
max-rules:
|
|
16
|
+
description: "Maximum number of rules per spec file"
|
|
17
|
+
required: false
|
|
18
|
+
catalog-only:
|
|
19
|
+
description: "Only check that linter rules exist, skip config-enabled checks (true/false)"
|
|
20
|
+
required: false
|
|
21
|
+
default: "false"
|
|
22
|
+
|
|
23
|
+
runs:
|
|
24
|
+
using: "node20"
|
|
25
|
+
main: "dist/action.js"
|
package/dist/action.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/dist/action.js
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GitHub Action entry point for vigiles.
|
|
4
|
+
*
|
|
5
|
+
* Runs `compile` or `audit` depending on the action input.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const node_child_process_1 = require("node:child_process");
|
|
11
|
+
const glob_1 = require("glob");
|
|
12
|
+
const compile_js_1 = require("./compile.js");
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Read action inputs
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
const command = process.env["INPUT_COMMAND"] ?? "audit";
|
|
17
|
+
const pathsInput = process.env["INPUT_PATHS"];
|
|
18
|
+
const maxRulesInput = process.env["INPUT_MAX-RULES"] ?? process.env["INPUT_MAX_RULES"];
|
|
19
|
+
const catalogOnly = (process.env["INPUT_CATALOG-ONLY"] ??
|
|
20
|
+
process.env["INPUT_CATALOG_ONLY"] ??
|
|
21
|
+
"false") === "true";
|
|
22
|
+
const maxRules = maxRulesInput ? Number(maxRulesInput) : undefined;
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Spec loading (from compiled dist/)
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
async function loadSpec(specPath) {
|
|
27
|
+
// Try several resolution strategies:
|
|
28
|
+
// 1. Replace /src/ with /dist/ (standard TS project layout)
|
|
29
|
+
// 2. Look under dist/ directly (root-level specs like CLAUDE.md.spec.ts)
|
|
30
|
+
// 3. Use the .js extension in-place (pre-compiled specs)
|
|
31
|
+
const jsName = specPath.replace(/\.ts$/, ".js");
|
|
32
|
+
const candidates = [
|
|
33
|
+
(0, node_path_1.resolve)(process.cwd(), jsName.replace(/\/src\//, "/dist/")),
|
|
34
|
+
(0, node_path_1.resolve)(process.cwd(), "dist", jsName),
|
|
35
|
+
(0, node_path_1.resolve)(process.cwd(), jsName),
|
|
36
|
+
];
|
|
37
|
+
// Deduplicate (candidate 1 and 3 may match when there's no /src/)
|
|
38
|
+
const unique = [...new Set(candidates)];
|
|
39
|
+
for (const distPath of unique) {
|
|
40
|
+
if (!(0, node_fs_1.existsSync)(distPath))
|
|
41
|
+
continue;
|
|
42
|
+
try {
|
|
43
|
+
const mod = (await import(distPath));
|
|
44
|
+
// CJS modules (TypeScript with module: "Node16", no "type":
|
|
45
|
+
// "module") produce `exports["default"] = spec`, so dynamic
|
|
46
|
+
// import wraps it as `{ default: { default: spec } }`. Unwrap
|
|
47
|
+
// the double-default when present.
|
|
48
|
+
const raw = mod.default;
|
|
49
|
+
if (raw && typeof raw === "object" && "default" in raw) {
|
|
50
|
+
return raw.default;
|
|
51
|
+
}
|
|
52
|
+
return raw;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Commands
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
async function runCompile() {
|
|
64
|
+
const specs = pathsInput
|
|
65
|
+
? pathsInput
|
|
66
|
+
.split(",")
|
|
67
|
+
.map((p) => p.trim())
|
|
68
|
+
.filter(Boolean)
|
|
69
|
+
: (0, glob_1.globSync)("**/*.spec.ts", { ignore: ["node_modules/**", "dist/**"] });
|
|
70
|
+
if (specs.length === 0) {
|
|
71
|
+
console.log("No .spec.ts files found.");
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
let allValid = true;
|
|
75
|
+
const basePath = process.cwd();
|
|
76
|
+
for (const specPath of specs) {
|
|
77
|
+
const spec = await loadSpec(specPath);
|
|
78
|
+
if (!spec) {
|
|
79
|
+
console.log(`::error file=${specPath}::Failed to load spec`);
|
|
80
|
+
allValid = false;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (spec._specType === "claude") {
|
|
84
|
+
const primaryOutput = specPath.replace(/\.spec\.ts$/, "");
|
|
85
|
+
const { markdown, errors, targets } = (0, compile_js_1.compileClaude)(spec, {
|
|
86
|
+
basePath,
|
|
87
|
+
specFile: specPath,
|
|
88
|
+
maxRules,
|
|
89
|
+
catalogOnly,
|
|
90
|
+
});
|
|
91
|
+
if (errors.length > 0) {
|
|
92
|
+
for (const err of errors) {
|
|
93
|
+
console.log(`::error file=${specPath}::${err.message}`);
|
|
94
|
+
}
|
|
95
|
+
allValid = false;
|
|
96
|
+
}
|
|
97
|
+
// Write primary target
|
|
98
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(basePath, primaryOutput), markdown);
|
|
99
|
+
const outputNames = [primaryOutput];
|
|
100
|
+
// Write additional targets with swapped heading + recomputed hash
|
|
101
|
+
for (const t of targets.slice(1)) {
|
|
102
|
+
const body = markdown
|
|
103
|
+
.replace(/^<!-- vigiles:[^\n]+\n\n?/, "")
|
|
104
|
+
.replace(/^# [^\n]+/, `# ${t}`);
|
|
105
|
+
const additional = (0, compile_js_1.addHash)(body, specPath);
|
|
106
|
+
const dir = primaryOutput.substring(0, primaryOutput.lastIndexOf("/") + 1);
|
|
107
|
+
const targetPath = dir + t;
|
|
108
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(basePath, targetPath), additional);
|
|
109
|
+
outputNames.push(targetPath);
|
|
110
|
+
}
|
|
111
|
+
console.log(`Compiled: ${specPath} → ${outputNames.join(", ")}`);
|
|
112
|
+
}
|
|
113
|
+
else if (spec._specType === "skill") {
|
|
114
|
+
const outputPath = specPath.replace(/\.spec\.ts$/, "");
|
|
115
|
+
const { markdown, errors } = (0, compile_js_1.compileSkill)(spec, {
|
|
116
|
+
basePath,
|
|
117
|
+
specFile: specPath,
|
|
118
|
+
});
|
|
119
|
+
if (errors.length > 0) {
|
|
120
|
+
for (const err of errors) {
|
|
121
|
+
console.log(`::error file=${specPath}::${err.message}`);
|
|
122
|
+
}
|
|
123
|
+
allValid = false;
|
|
124
|
+
}
|
|
125
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.resolve)(basePath, outputPath), markdown);
|
|
126
|
+
console.log(`Compiled: ${specPath} → ${outputPath}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return allValid;
|
|
130
|
+
}
|
|
131
|
+
function runAudit() {
|
|
132
|
+
// Delegate to the CLI so the action always runs the full audit flow
|
|
133
|
+
// (hash verification, spec validation, duplicate detection, coverage
|
|
134
|
+
// report, strengthen suggestions). Previously this only ran
|
|
135
|
+
// checkFileHash, which silently skipped everything else.
|
|
136
|
+
const files = pathsInput
|
|
137
|
+
? pathsInput
|
|
138
|
+
.split(",")
|
|
139
|
+
.map((p) => p.trim())
|
|
140
|
+
.filter(Boolean)
|
|
141
|
+
: [];
|
|
142
|
+
const cliPath = (0, node_path_1.resolve)(__dirname, "cli.js");
|
|
143
|
+
const args = ["audit", ...files];
|
|
144
|
+
const result = (0, node_child_process_1.spawnSync)(process.execPath, [cliPath, ...args], {
|
|
145
|
+
stdio: "inherit",
|
|
146
|
+
env: {
|
|
147
|
+
...process.env,
|
|
148
|
+
// Ensure the CLI emits GitHub annotations during the action run
|
|
149
|
+
GITHUB_ACTIONS: process.env.GITHUB_ACTIONS ?? "true",
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
if (result.error) {
|
|
153
|
+
console.log(`::error::Failed to run vigiles audit: ${result.error.message}`);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
// Exit codes: 0 clean, 1 warnings, 2 hard errors.
|
|
157
|
+
return result.status === 0;
|
|
158
|
+
}
|
|
159
|
+
// ---------------------------------------------------------------------------
|
|
160
|
+
// Main
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
162
|
+
void (async () => {
|
|
163
|
+
let valid;
|
|
164
|
+
if (command === "compile") {
|
|
165
|
+
valid = await runCompile();
|
|
166
|
+
}
|
|
167
|
+
else if (command === "audit") {
|
|
168
|
+
valid = runAudit();
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
console.log(`::error::Unknown vigiles command "${command}". Valid commands: compile, audit.`);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
console.log(`::set-output name=valid::${String(valid)}`);
|
|
175
|
+
if (!valid) {
|
|
176
|
+
console.log("::error::vigiles failed — see errors above");
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
})();
|
|
180
|
+
//# sourceMappingURL=action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* vigiles CLI — compile typed specs to instruction files.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* vigiles init — scaffold a spec from scratch
|
|
7
|
+
* vigiles compile — compile .spec.ts → .md with linter verification
|
|
8
|
+
* vigiles audit — verify hashes, report coverage, detect duplicates
|
|
9
|
+
* vigiles generate-types — emit .d.ts with types from project state
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
|