javi-forge 1.5.0 → 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 +191 -3
- package/ci-local/hooks/pre-push +17 -13
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +56 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plugin.d.ts +16 -0
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +70 -1
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/security.d.ts +25 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +305 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/skills.d.ts +82 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +510 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/tdd.d.ts +21 -0
- package/dist/commands/tdd.d.ts.map +1 -0
- package/dist/commands/tdd.js +117 -0
- package/dist/commands/tdd.js.map +1 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +132 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +137 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-skills.d.ts +38 -0
- package/dist/lib/agent-skills.d.ts.map +1 -0
- package/dist/lib/agent-skills.js +111 -0
- package/dist/lib/agent-skills.js.map +1 -0
- package/dist/lib/claudemd.d.ts +8 -0
- package/dist/lib/claudemd.d.ts.map +1 -0
- package/dist/lib/claudemd.js +72 -0
- package/dist/lib/claudemd.js.map +1 -0
- package/dist/lib/codex-export.d.ts +16 -0
- package/dist/lib/codex-export.d.ts.map +1 -0
- package/dist/lib/codex-export.js +111 -0
- package/dist/lib/codex-export.js.map +1 -0
- package/dist/lib/context.d.ts +12 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +75 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/plugin.d.ts +13 -1
- package/dist/lib/plugin.d.ts.map +1 -1
- package/dist/lib/plugin.js +68 -0
- package/dist/lib/plugin.js.map +1 -1
- package/dist/types/index.d.ts +119 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +6 -0
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/OptionSelector.d.ts +2 -0
- package/dist/ui/OptionSelector.d.ts.map +1 -1
- package/dist/ui/OptionSelector.js +6 -0
- package/dist/ui/OptionSelector.js.map +1 -1
- package/dist/ui/Plugin.d.ts +1 -1
- package/dist/ui/Plugin.d.ts.map +1 -1
- package/dist/ui/Plugin.js +18 -1
- package/dist/ui/Plugin.js.map +1 -1
- package/dist/ui/Skills.d.ts +11 -0
- package/dist/ui/Skills.d.ts.map +1 -0
- package/dist/ui/Skills.js +119 -0
- package/dist/ui/Skills.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { detectCIStack } from './ci.js';
|
|
4
|
+
// =============================================================================
|
|
5
|
+
// Test command resolution
|
|
6
|
+
// =============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the correct test command for TDD hook based on stack and build tool.
|
|
9
|
+
* Returns null if no test command can be determined.
|
|
10
|
+
*/
|
|
11
|
+
export async function getTddTestCommand(stack, buildTool, projectDir) {
|
|
12
|
+
switch (stack) {
|
|
13
|
+
case 'node': {
|
|
14
|
+
const pkgPath = path.join(projectDir, 'package.json');
|
|
15
|
+
try {
|
|
16
|
+
const pkgContent = await fs.readFile(pkgPath, 'utf-8');
|
|
17
|
+
if (!pkgContent.includes('"test"'))
|
|
18
|
+
return null;
|
|
19
|
+
return buildTool === 'npm' ? 'npm test' : `${buildTool} run test`;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
case 'python':
|
|
26
|
+
return 'pytest';
|
|
27
|
+
case 'go':
|
|
28
|
+
return 'go test ./...';
|
|
29
|
+
default:
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// =============================================================================
|
|
34
|
+
// Hook generation
|
|
35
|
+
// =============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Generate a TDD-enforcing pre-commit hook script.
|
|
38
|
+
* If testCmd is null, generates a warning-only hook.
|
|
39
|
+
*/
|
|
40
|
+
export function generateTddHook(testCmd, stack) {
|
|
41
|
+
if (!testCmd) {
|
|
42
|
+
return `#!/bin/bash
|
|
43
|
+
# =============================================================================
|
|
44
|
+
# TDD PRE-COMMIT: No test command detected for stack "${stack}"
|
|
45
|
+
# =============================================================================
|
|
46
|
+
# Install a test runner and re-run: javi-forge tdd init
|
|
47
|
+
# =============================================================================
|
|
48
|
+
|
|
49
|
+
echo "TDD HOOK: No test command configured for stack '${stack}' — skipping."
|
|
50
|
+
exit 0
|
|
51
|
+
`;
|
|
52
|
+
}
|
|
53
|
+
return `#!/bin/bash
|
|
54
|
+
# =============================================================================
|
|
55
|
+
# TDD PRE-COMMIT: Enforced test-driven development
|
|
56
|
+
# =============================================================================
|
|
57
|
+
# Flow: Tests MUST pass before commit is allowed.
|
|
58
|
+
# Stack: ${stack} | Command: ${testCmd}
|
|
59
|
+
# To skip: git commit --no-verify
|
|
60
|
+
# =============================================================================
|
|
61
|
+
|
|
62
|
+
set -e
|
|
63
|
+
|
|
64
|
+
echo "TDD PRE-COMMIT: Running tests..."
|
|
65
|
+
echo " Stack: ${stack}"
|
|
66
|
+
echo " Command: ${testCmd}"
|
|
67
|
+
echo ""
|
|
68
|
+
|
|
69
|
+
${testCmd} || {
|
|
70
|
+
echo ""
|
|
71
|
+
echo "TDD FAILED — Tests did not pass."
|
|
72
|
+
echo " Fix failing tests before committing."
|
|
73
|
+
echo " To skip: git commit --no-verify"
|
|
74
|
+
exit 1
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
echo ""
|
|
78
|
+
echo "TDD PASSED — All tests green. Commit allowed."
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// Hook installation
|
|
83
|
+
// =============================================================================
|
|
84
|
+
/**
|
|
85
|
+
* Install TDD pre-commit hook into .git/hooks/.
|
|
86
|
+
* Detects the project stack automatically and generates the appropriate hook.
|
|
87
|
+
*/
|
|
88
|
+
export async function installTddHooks(projectDir) {
|
|
89
|
+
const gitDir = path.join(projectDir, '.git');
|
|
90
|
+
if (!await fs.pathExists(gitDir)) {
|
|
91
|
+
return { installed: [], errors: ['Not a git repository. Run git init first.'] };
|
|
92
|
+
}
|
|
93
|
+
const hooksDir = path.join(gitDir, 'hooks');
|
|
94
|
+
await fs.ensureDir(hooksDir);
|
|
95
|
+
// Detect stack
|
|
96
|
+
let stackInfo;
|
|
97
|
+
try {
|
|
98
|
+
stackInfo = await detectCIStack(projectDir);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return { installed: [], errors: ['Failed to detect project stack.'] };
|
|
102
|
+
}
|
|
103
|
+
const testCmd = await getTddTestCommand(stackInfo.stackType, stackInfo.buildTool, projectDir);
|
|
104
|
+
const hookContent = generateTddHook(testCmd, stackInfo.stackType);
|
|
105
|
+
const installed = [];
|
|
106
|
+
const errors = [];
|
|
107
|
+
const hookPath = path.join(hooksDir, 'pre-commit');
|
|
108
|
+
try {
|
|
109
|
+
await fs.writeFile(hookPath, hookContent, { mode: 0o755 });
|
|
110
|
+
installed.push('pre-commit');
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
errors.push(`pre-commit: ${e instanceof Error ? e.message : String(e)}`);
|
|
114
|
+
}
|
|
115
|
+
return { installed, errors };
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=tdd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tdd.js","sourceRoot":"","sources":["../../src/commands/tdd.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StackContextEntry, StackClaudeMdEntry } from './types/index.js';
|
|
1
2
|
/** Root of the javi-forge package (one level up from dist/) */
|
|
2
3
|
export declare const FORGE_ROOT: string;
|
|
3
4
|
/** Templates directory */
|
|
@@ -18,8 +19,14 @@ export declare const PLUGIN_REGISTRY_URL = "https://raw.githubusercontent.com/JN
|
|
|
18
19
|
export declare const PLUGIN_MANIFEST_FILE = "plugin.json";
|
|
19
20
|
/** Valid plugin asset directories */
|
|
20
21
|
export declare const PLUGIN_ASSET_DIRS: readonly ["skills", "commands", "hooks", "agents"];
|
|
22
|
+
/** Agent Skills spec manifest filename */
|
|
23
|
+
export declare const AGENT_SKILLS_MANIFEST_FILE = "skills.json";
|
|
21
24
|
/** Stack-to-dependabot fragment mapping */
|
|
22
25
|
export declare const STACK_DEPENDABOT_MAP: Record<string, string[]>;
|
|
26
|
+
/** Stack-to-CLAUDE.md metadata mapping */
|
|
27
|
+
export declare const STACK_CLAUDEMD_MAP: Record<string, StackClaudeMdEntry>;
|
|
28
|
+
/** Stack-to-context template mapping */
|
|
29
|
+
export declare const STACK_CONTEXT_MAP: Record<string, StackContextEntry>;
|
|
23
30
|
/** Stack-to-CI template filename mapping */
|
|
24
31
|
export declare const STACK_CI_MAP: Record<string, Record<string, string>>;
|
|
25
32
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAI7E,+DAA+D;AAC/D,eAAO,MAAM,UAAU,QAAgC,CAAA;AAEvD,0BAA0B;AAC1B,eAAO,MAAM,aAAa,QAAqC,CAAA;AAE/D,wBAAwB;AACxB,eAAO,MAAM,WAAW,QAAmC,CAAA;AAE3D,0BAA0B;AAC1B,eAAO,MAAM,aAAa,QAAqC,CAAA;AAE/D,yBAAyB;AACzB,eAAO,MAAM,YAAY,QAAoC,CAAA;AAE7D,oCAAoC;AACpC,eAAO,MAAM,wBAAwB,QAAmD,CAAA;AAExF,4CAA4C;AAC5C,eAAO,MAAM,WAAW,QAAmC,CAAA;AAE3D,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB,qFAAqF,CAAA;AAErH,+BAA+B;AAC/B,eAAO,MAAM,oBAAoB,gBAAgB,CAAA;AAEjD,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,oDAAqD,CAAA;AAEnF,0CAA0C;AAC1C,eAAO,MAAM,0BAA0B,gBAAgB,CAAA;AAEvD,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAQzD,CAAA;AAED,0CAA0C;AAC1C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAyCjE,CAAA;AAED,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAqF/D,CAAA;AAED,4CAA4C;AAC5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyB/D,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -21,6 +21,8 @@ export const PLUGIN_REGISTRY_URL = 'https://raw.githubusercontent.com/JNZader/ja
|
|
|
21
21
|
export const PLUGIN_MANIFEST_FILE = 'plugin.json';
|
|
22
22
|
/** Valid plugin asset directories */
|
|
23
23
|
export const PLUGIN_ASSET_DIRS = ['skills', 'commands', 'hooks', 'agents'];
|
|
24
|
+
/** Agent Skills spec manifest filename */
|
|
25
|
+
export const AGENT_SKILLS_MANIFEST_FILE = 'skills.json';
|
|
24
26
|
/** Stack-to-dependabot fragment mapping */
|
|
25
27
|
export const STACK_DEPENDABOT_MAP = {
|
|
26
28
|
'node': ['npm'],
|
|
@@ -31,6 +33,136 @@ export const STACK_DEPENDABOT_MAP = {
|
|
|
31
33
|
'java-maven': ['maven'],
|
|
32
34
|
'elixir': [],
|
|
33
35
|
};
|
|
36
|
+
/** Stack-to-CLAUDE.md metadata mapping */
|
|
37
|
+
export const STACK_CLAUDEMD_MAP = {
|
|
38
|
+
node: {
|
|
39
|
+
skills: ['typescript', 'react-19', 'tailwind-4'],
|
|
40
|
+
conventions: 'TypeScript strict, ESM modules, functional components',
|
|
41
|
+
testFramework: 'vitest',
|
|
42
|
+
},
|
|
43
|
+
python: {
|
|
44
|
+
skills: ['pytest', 'django-drf'],
|
|
45
|
+
conventions: 'PEP 8, type hints, ruff linting',
|
|
46
|
+
testFramework: 'pytest',
|
|
47
|
+
},
|
|
48
|
+
go: {
|
|
49
|
+
skills: [],
|
|
50
|
+
conventions: 'gofmt, golangci-lint, table-driven tests',
|
|
51
|
+
testFramework: 'go test',
|
|
52
|
+
},
|
|
53
|
+
rust: {
|
|
54
|
+
skills: [],
|
|
55
|
+
conventions: 'cargo fmt, clippy, edition 2021+',
|
|
56
|
+
testFramework: 'cargo test',
|
|
57
|
+
},
|
|
58
|
+
'java-gradle': {
|
|
59
|
+
skills: [],
|
|
60
|
+
conventions: 'Gradle Kotlin DSL, JUnit 5, Checkstyle',
|
|
61
|
+
testFramework: 'JUnit 5',
|
|
62
|
+
},
|
|
63
|
+
'java-maven': {
|
|
64
|
+
skills: [],
|
|
65
|
+
conventions: 'Maven standard layout, JUnit 5, Checkstyle',
|
|
66
|
+
testFramework: 'JUnit 5',
|
|
67
|
+
},
|
|
68
|
+
elixir: {
|
|
69
|
+
skills: [],
|
|
70
|
+
conventions: 'mix format, Credo, OTP conventions',
|
|
71
|
+
testFramework: 'ExUnit',
|
|
72
|
+
},
|
|
73
|
+
default: {
|
|
74
|
+
skills: [],
|
|
75
|
+
conventions: 'Follow language-specific best practices',
|
|
76
|
+
testFramework: 'project default',
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
/** Stack-to-context template mapping */
|
|
80
|
+
export const STACK_CONTEXT_MAP = {
|
|
81
|
+
node: {
|
|
82
|
+
tree: [
|
|
83
|
+
'src/ — source code',
|
|
84
|
+
' index.ts — entry point',
|
|
85
|
+
'tests/ — test suites',
|
|
86
|
+
'package.json — dependencies & scripts',
|
|
87
|
+
'tsconfig.json — TypeScript config',
|
|
88
|
+
].join('\n'),
|
|
89
|
+
conventions: 'TypeScript strict, ESM modules, vitest for testing',
|
|
90
|
+
entryPoint: 'src/index.ts',
|
|
91
|
+
},
|
|
92
|
+
python: {
|
|
93
|
+
tree: [
|
|
94
|
+
'src/ — source packages',
|
|
95
|
+
' __init__.py — package root',
|
|
96
|
+
'tests/ — pytest suites',
|
|
97
|
+
'pyproject.toml — project config',
|
|
98
|
+
].join('\n'),
|
|
99
|
+
conventions: 'PEP 8, type hints, pytest, ruff for linting',
|
|
100
|
+
entryPoint: 'src/__init__.py',
|
|
101
|
+
},
|
|
102
|
+
go: {
|
|
103
|
+
tree: [
|
|
104
|
+
'cmd/ — CLI entry points',
|
|
105
|
+
'internal/ — private packages',
|
|
106
|
+
'pkg/ — public packages',
|
|
107
|
+
'go.mod — module definition',
|
|
108
|
+
'go.sum — dependency checksums',
|
|
109
|
+
].join('\n'),
|
|
110
|
+
conventions: 'gofmt, golangci-lint, table-driven tests',
|
|
111
|
+
entryPoint: 'cmd/main.go',
|
|
112
|
+
},
|
|
113
|
+
rust: {
|
|
114
|
+
tree: [
|
|
115
|
+
'src/ — source code',
|
|
116
|
+
' main.rs — entry point',
|
|
117
|
+
' lib.rs — library root',
|
|
118
|
+
'tests/ — integration tests',
|
|
119
|
+
'Cargo.toml — manifest & dependencies',
|
|
120
|
+
].join('\n'),
|
|
121
|
+
conventions: 'cargo fmt, clippy lints, edition 2021+',
|
|
122
|
+
entryPoint: 'src/main.rs',
|
|
123
|
+
},
|
|
124
|
+
'java-gradle': {
|
|
125
|
+
tree: [
|
|
126
|
+
'src/main/java/ — application source',
|
|
127
|
+
'src/test/java/ — test source',
|
|
128
|
+
'src/main/resources/ — config & assets',
|
|
129
|
+
'build.gradle.kts — Gradle build script',
|
|
130
|
+
'settings.gradle.kts — project settings',
|
|
131
|
+
].join('\n'),
|
|
132
|
+
conventions: 'Gradle Kotlin DSL, JUnit 5, Checkstyle',
|
|
133
|
+
entryPoint: 'src/main/java/Main.java',
|
|
134
|
+
},
|
|
135
|
+
'java-maven': {
|
|
136
|
+
tree: [
|
|
137
|
+
'src/main/java/ — application source',
|
|
138
|
+
'src/test/java/ — test source',
|
|
139
|
+
'src/main/resources/ — config & assets',
|
|
140
|
+
'pom.xml — Maven POM',
|
|
141
|
+
].join('\n'),
|
|
142
|
+
conventions: 'Maven standard layout, JUnit 5, Checkstyle',
|
|
143
|
+
entryPoint: 'src/main/java/Main.java',
|
|
144
|
+
},
|
|
145
|
+
elixir: {
|
|
146
|
+
tree: [
|
|
147
|
+
'lib/ — application source',
|
|
148
|
+
' application.ex — OTP application',
|
|
149
|
+
'test/ — ExUnit tests',
|
|
150
|
+
'config/ — runtime config',
|
|
151
|
+
'mix.exs — project definition',
|
|
152
|
+
].join('\n'),
|
|
153
|
+
conventions: 'mix format, Credo, ExUnit, OTP conventions',
|
|
154
|
+
entryPoint: 'lib/application.ex',
|
|
155
|
+
},
|
|
156
|
+
default: {
|
|
157
|
+
tree: [
|
|
158
|
+
'src/ — source code',
|
|
159
|
+
'tests/ — test suites',
|
|
160
|
+
'README.md — project documentation',
|
|
161
|
+
].join('\n'),
|
|
162
|
+
conventions: 'Follow language-specific best practices',
|
|
163
|
+
entryPoint: 'src/index',
|
|
164
|
+
},
|
|
165
|
+
};
|
|
34
166
|
/** Stack-to-CI template filename mapping */
|
|
35
167
|
export const STACK_CI_MAP = {
|
|
36
168
|
github: {
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import path from 'path';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { render } from 'ink';
|
|
4
5
|
import { PassThrough } from 'node:stream';
|
|
@@ -9,6 +10,7 @@ import App from './ui/App.js';
|
|
|
9
10
|
import Doctor from './ui/Doctor.js';
|
|
10
11
|
import AnalyzeUI from './ui/AnalyzeUI.js';
|
|
11
12
|
import Plugin from './ui/Plugin.js';
|
|
13
|
+
import Skills from './ui/Skills.js';
|
|
12
14
|
import LlmsTxt from './ui/LlmsTxt.js';
|
|
13
15
|
import CI from './ui/CI.js';
|
|
14
16
|
import { CIProvider as CIContextProvider } from './ui/CIContext.js';
|
|
@@ -23,6 +25,7 @@ const cli = meow(`
|
|
|
23
25
|
Commands
|
|
24
26
|
init Bootstrap a new project (default)
|
|
25
27
|
ci Run CI simulation (lint + compile + test + security + ghagga)
|
|
28
|
+
tdd init Install TDD-enforcing pre-commit hook (auto-detects stack)
|
|
26
29
|
analyze Run repoforge skills analysis
|
|
27
30
|
doctor Show health report
|
|
28
31
|
plugin add Install a plugin from GitHub (org/repo)
|
|
@@ -30,6 +33,16 @@ const cli = meow(`
|
|
|
30
33
|
plugin list List installed plugins
|
|
31
34
|
plugin search Search the plugin registry
|
|
32
35
|
plugin validate Validate a local plugin directory
|
|
36
|
+
plugin sync Auto-detect and wire installed plugins
|
|
37
|
+
plugin export Export plugin to Agent Skills spec format (skills.json)
|
|
38
|
+
plugin import Import an Agent Skills spec package as a javi-forge plugin
|
|
39
|
+
skills doctor Show skills health report (add --deep for conflict detection)
|
|
40
|
+
skills budget Show token cost of loaded skills (add -b N for custom budget)
|
|
41
|
+
skills score Score a skill on quality dimensions (completeness, clarity, testability, token-efficiency)
|
|
42
|
+
skills benchmark Benchmark a skill with structural quality checks
|
|
43
|
+
security baseline Create security baseline from current audit findings
|
|
44
|
+
security check Check for regressions against baseline (exits non-zero if found)
|
|
45
|
+
security update Re-snapshot baseline (acknowledge current vulns)
|
|
33
46
|
llms-txt Generate AI-friendly llms.txt for current project
|
|
34
47
|
|
|
35
48
|
Options
|
|
@@ -41,6 +54,9 @@ const cli = meow(`
|
|
|
41
54
|
--ghagga Enable GHAGGA review system
|
|
42
55
|
--mock Enable mock-first mode (no real API keys needed)
|
|
43
56
|
--batch Non-interactive mode (auto-proceed, no keyboard input)
|
|
57
|
+
--deep Enable deep analysis (conflict + duplicate detection)
|
|
58
|
+
--budget, -b Token budget limit for skills (default: 8000)
|
|
59
|
+
--skills-dir Custom skills directory path
|
|
44
60
|
--version Show version
|
|
45
61
|
--help Show this help
|
|
46
62
|
|
|
@@ -63,6 +79,7 @@ const cli = meow(`
|
|
|
63
79
|
$ javi-forge init --stack node --ci github
|
|
64
80
|
$ javi-forge ci
|
|
65
81
|
$ javi-forge ci init
|
|
82
|
+
$ javi-forge tdd init
|
|
66
83
|
$ javi-forge ci --quick
|
|
67
84
|
$ javi-forge ci --no-ci-ghagga --no-security
|
|
68
85
|
$ javi-forge ci --no-docker
|
|
@@ -90,6 +107,10 @@ const cli = meow(`
|
|
|
90
107
|
ciGhagga: { type: 'boolean', default: true },
|
|
91
108
|
security: { type: 'boolean', default: true },
|
|
92
109
|
timeout: { type: 'number', default: 600 },
|
|
110
|
+
// Skills flags
|
|
111
|
+
deep: { type: 'boolean', default: false },
|
|
112
|
+
budget: { type: 'number', shortFlag: 'b', default: 8000 },
|
|
113
|
+
skillsDir: { type: 'string', default: '' },
|
|
93
114
|
}
|
|
94
115
|
});
|
|
95
116
|
const subcommand = cli.input[0] ?? 'init';
|
|
@@ -104,6 +125,26 @@ const fakeStdin = new PassThrough();
|
|
|
104
125
|
Object.defineProperty(fakeStdin, 'isTTY', { value: false });
|
|
105
126
|
const inkStdin = isTTY ? process.stdin : fakeStdin;
|
|
106
127
|
switch (subcommand) {
|
|
128
|
+
case 'tdd': {
|
|
129
|
+
if (cli.input[1] === 'init') {
|
|
130
|
+
const { installTddHooks } = await import('./commands/tdd.js');
|
|
131
|
+
const { installed, errors } = await installTddHooks(process.cwd());
|
|
132
|
+
if (installed.length > 0) {
|
|
133
|
+
console.log(`\u2713 Installed TDD hooks: ${installed.join(', ')}`);
|
|
134
|
+
console.log(' Pre-commit hook enforces tests must pass before commit');
|
|
135
|
+
}
|
|
136
|
+
for (const err of errors) {
|
|
137
|
+
console.error(`\u2717 ${err}`);
|
|
138
|
+
}
|
|
139
|
+
process.exit(errors.length > 0 ? 1 : 0);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.error('Usage: javi-forge tdd init');
|
|
143
|
+
console.error(' init Install TDD-enforcing pre-commit hook');
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
107
148
|
case 'ci': {
|
|
108
149
|
// Sub-command: javi-forge ci init → install git hooks
|
|
109
150
|
if (cli.input[1] === 'init') {
|
|
@@ -144,13 +185,108 @@ switch (subcommand) {
|
|
|
144
185
|
}
|
|
145
186
|
case 'plugin': {
|
|
146
187
|
const pluginAction = cli.input[1];
|
|
147
|
-
const VALID_PLUGIN_ACTIONS = ['add', 'remove', 'list', 'search', 'validate'];
|
|
188
|
+
const VALID_PLUGIN_ACTIONS = ['add', 'remove', 'list', 'search', 'validate', 'sync', 'export', 'import'];
|
|
148
189
|
const action = pluginAction && VALID_PLUGIN_ACTIONS.includes(pluginAction) ? pluginAction : 'list';
|
|
149
190
|
const target = cli.input[2];
|
|
150
191
|
render(React.createElement(CIContextProvider, { isCI: isCI },
|
|
151
192
|
React.createElement(Plugin, { action: action, target: target, dryRun: cli.flags.dryRun })), { stdin: inkStdin });
|
|
152
193
|
break;
|
|
153
194
|
}
|
|
195
|
+
case 'skills': {
|
|
196
|
+
const skillsAction = cli.input[1];
|
|
197
|
+
const VALID_SKILLS_ACTIONS = ['doctor', 'budget', 'score', 'benchmark'];
|
|
198
|
+
if (!skillsAction || !VALID_SKILLS_ACTIONS.includes(skillsAction)) {
|
|
199
|
+
console.error('Usage: javi-forge skills <doctor|budget|score|benchmark>');
|
|
200
|
+
console.error(' doctor Show skills health report (add --deep for conflict detection)');
|
|
201
|
+
console.error(' budget Show token cost of loaded skills (add -b N for custom budget)');
|
|
202
|
+
console.error(' score Score a skill on quality dimensions (0-100)');
|
|
203
|
+
console.error(' benchmark Benchmark a skill with structural quality checks');
|
|
204
|
+
process.exit(1);
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
// Score and benchmark are non-interactive CLI commands
|
|
208
|
+
if (skillsAction === 'score' || skillsAction === 'benchmark') {
|
|
209
|
+
const targetSkill = cli.input[2];
|
|
210
|
+
if (!targetSkill) {
|
|
211
|
+
console.error(`Usage: javi-forge skills ${skillsAction} <skill-name>`);
|
|
212
|
+
process.exit(1);
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
const skillsDir = cli.flags.skillsDir || path.join(process.env['HOME'] ?? '~', '.claude', 'skills');
|
|
216
|
+
const skillPath = path.join(skillsDir, targetSkill, 'SKILL.md');
|
|
217
|
+
if (skillsAction === 'score') {
|
|
218
|
+
const { scoreSkill } = await import('./commands/skills.js');
|
|
219
|
+
const result = await scoreSkill(skillPath, cli.flags.budget);
|
|
220
|
+
if (!result) {
|
|
221
|
+
console.error(`\u2717 Skill not found: ${skillPath}`);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
console.log(`\nSkill: ${result.skillName}`);
|
|
226
|
+
console.log(` Completeness: ${result.completeness}/100`);
|
|
227
|
+
console.log(` Clarity: ${result.clarity}/100`);
|
|
228
|
+
console.log(` Testability: ${result.testability}/100`);
|
|
229
|
+
console.log(` Token Efficiency: ${result.tokenEfficiency}/100`);
|
|
230
|
+
console.log(` Overall: ${result.overall}/100`);
|
|
231
|
+
console.log(` Threshold: ${result.threshold}`);
|
|
232
|
+
console.log(` Status: ${result.passing ? '\u2713 PASSING' : '\u2717 FAILING'}`);
|
|
233
|
+
process.exit(result.passing ? 0 : 1);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
const { benchmarkSkill } = await import('./commands/skills.js');
|
|
237
|
+
const result = await benchmarkSkill(skillPath);
|
|
238
|
+
if (!result) {
|
|
239
|
+
console.error(`\u2717 Skill not found: ${skillPath}`);
|
|
240
|
+
process.exit(1);
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
console.log(`\nBenchmark: ${result.skillName}`);
|
|
244
|
+
for (const check of result.checks) {
|
|
245
|
+
const icon = check.passed ? '\u2713' : '\u2717';
|
|
246
|
+
console.log(` ${icon} ${check.name}${check.detail ? ` — ${check.detail}` : ''}`);
|
|
247
|
+
}
|
|
248
|
+
console.log(`\n Pass rate: ${result.passRate}%`);
|
|
249
|
+
process.exit(result.passRate >= 50 ? 0 : 1);
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
const skillsMode = skillsAction;
|
|
254
|
+
render(React.createElement(CIContextProvider, { isCI: isCI },
|
|
255
|
+
React.createElement(Skills, { mode: skillsMode, budget: cli.flags.budget, deep: cli.flags.deep, skillsDir: cli.flags.skillsDir || undefined })), { stdin: inkStdin });
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
case 'security': {
|
|
259
|
+
const securityAction = cli.input[1];
|
|
260
|
+
const VALID_SECURITY_ACTIONS = ['baseline', 'check', 'update'];
|
|
261
|
+
if (!securityAction || !VALID_SECURITY_ACTIONS.includes(securityAction)) {
|
|
262
|
+
console.error('Usage: javi-forge security <baseline|check|update>');
|
|
263
|
+
console.error(' baseline Create security baseline from current audit findings');
|
|
264
|
+
console.error(' check Check for regressions against baseline');
|
|
265
|
+
console.error(' update Re-snapshot baseline (acknowledge current vulns)');
|
|
266
|
+
process.exit(1);
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
const { runSecurity } = await import('./commands/security.js');
|
|
270
|
+
const mode = securityAction;
|
|
271
|
+
try {
|
|
272
|
+
const result = await runSecurity(mode, process.cwd(), (step) => {
|
|
273
|
+
const icon = step.status === 'done' ? '\u2713'
|
|
274
|
+
: step.status === 'error' ? '\u2717'
|
|
275
|
+
: step.status === 'skipped' ? '-'
|
|
276
|
+
: '\u25CB';
|
|
277
|
+
console.log(`${icon} ${step.label}`);
|
|
278
|
+
if (step.detail)
|
|
279
|
+
console.log(` ${step.detail}`);
|
|
280
|
+
});
|
|
281
|
+
if (mode === 'check' && result && result.regressions.length > 0) {
|
|
282
|
+
process.exit(1);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
process.exit(1);
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
154
290
|
case 'init':
|
|
155
291
|
default: {
|
|
156
292
|
const presetStack = VALID_STACKS.includes(cli.flags.stack)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { PluginManifest, AgentSkillsManifest } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a javi-forge PluginManifest to an Agent Skills spec manifest.
|
|
4
|
+
*/
|
|
5
|
+
export declare function pluginToAgentSkills(manifest: PluginManifest, source?: string): AgentSkillsManifest;
|
|
6
|
+
/**
|
|
7
|
+
* Convert an Agent Skills spec manifest to a javi-forge PluginManifest.
|
|
8
|
+
*/
|
|
9
|
+
export declare function agentSkillsToPlugin(agentManifest: AgentSkillsManifest): PluginManifest;
|
|
10
|
+
/**
|
|
11
|
+
* Generate a skills.json file in the given plugin directory from its plugin.json.
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateAgentSkillsManifest(pluginDir: string, source?: string): Promise<{
|
|
14
|
+
success: boolean;
|
|
15
|
+
path?: string;
|
|
16
|
+
error?: string;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Export an installed plugin to Agent Skills format.
|
|
20
|
+
* Looks up the plugin by name in the global plugins directory.
|
|
21
|
+
*/
|
|
22
|
+
export declare function exportPluginAsAgentSkills(name: string): Promise<{
|
|
23
|
+
success: boolean;
|
|
24
|
+
path?: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Import an Agent Skills spec package from a directory.
|
|
29
|
+
* Reads skills.json, converts to plugin.json, copies to plugins dir.
|
|
30
|
+
*/
|
|
31
|
+
export declare function importAgentSkillsPackage(sourceDir: string, options?: {
|
|
32
|
+
dryRun?: boolean;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
success: boolean;
|
|
35
|
+
name?: string;
|
|
36
|
+
error?: string;
|
|
37
|
+
}>;
|
|
38
|
+
//# sourceMappingURL=agent-skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-skills.d.ts","sourceRoot":"","sources":["../../src/lib/agent-skills.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EAGpB,MAAM,mBAAmB,CAAA;AAK1B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAclG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,mBAAmB,GAAG,cAAc,CAQtF;AAID;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB9D;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ9D;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkD9D"}
|