nitm-ai-dev-toolkit 3.0.23 → 5.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/CHANGELOG.md +44 -3
- package/README.md +93 -6
- package/bin/cli.js +155 -25
- package/bin/factory-archive.js +71 -0
- package/bin/factory-prune.js +79 -0
- package/bin/factory-watch.js +509 -0
- package/package.json +1 -1
- package/src/monorepo/.agents/skills/factory/SKILL.md +593 -0
- package/src/monorepo/.claude/agents/admin-portal.agent.md +1 -1
- package/src/monorepo/.claude/agents/api-specialist.agent.md +1 -1
- package/src/monorepo/.claude/agents/backend-architect.agent.md +1 -1
- package/src/monorepo/.claude/agents/documenter.agent.md +1 -1
- package/src/monorepo/.claude/agents/factory-approver.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-builder.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-code.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-security.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-ui.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-reviewer-ux.agent.md +12 -0
- package/src/monorepo/.claude/agents/factory-spec-writer.agent.md +12 -0
- package/src/monorepo/.claude/agents/feature-builder.agent.md +1 -1
- package/src/monorepo/.claude/agents/frontend-developer.agent.md +1 -1
- package/src/monorepo/.claude/agents/green.agent.md +1 -1
- package/src/monorepo/.claude/agents/implementer.agent.md +1 -1
- package/src/monorepo/.claude/agents/planner.agent.md +1 -1
- package/src/monorepo/.claude/agents/red.agent.md +1 -1
- package/src/monorepo/.claude/agents/refactor.agent.md +1 -1
- package/src/monorepo/.claude/agents/researcher.agent.md +1 -1
- package/src/monorepo/.claude/agents/reviewer.agent.md +1 -1
- package/src/monorepo/.claude/agents/tdd.agent.md +1 -1
- package/src/monorepo/.claude/agents-snippets/factory-approver.md +72 -0
- package/src/monorepo/.claude/agents-snippets/factory-builder.md +101 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-code.md +57 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-security.md +48 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-ui.md +64 -0
- package/src/monorepo/.claude/agents-snippets/factory-reviewer-ux.md +64 -0
- package/src/monorepo/.claude/agents-snippets/factory-spec-writer.md +119 -0
- package/src/monorepo/.claude/agents-snippets/feature-builder.md +1 -1
- package/src/monorepo/.claude/commands/factory.md +24 -0
- package/src/monorepo/.claude/commands/ponytail-audit.md +4 -6
- package/src/monorepo/.claude/commands/ponytail-debt.md +3 -5
- package/src/monorepo/.claude/commands/ponytail-gain.md +2 -4
- package/src/monorepo/.claude/commands/ponytail-help.md +2 -4
- package/src/monorepo/.claude/commands/ponytail-review.md +3 -5
- package/src/monorepo/.claude/commands/ponytail.md +3 -5
- package/src/monorepo/.claude/prompt-snippets/assign-tasks.md +6 -2
- package/src/monorepo/.claude/prompt-snippets/bootstrap-patch.md +32 -17
- package/src/monorepo/.claude/prompt-snippets/bootstrap-upgrade.md +76 -51
- package/src/monorepo/.claude/prompt-snippets/bootstrap.md +57 -29
- package/src/monorepo/.claude/prompt-snippets/factory.md +20 -0
- package/src/monorepo/.claude/prompt-snippets/implement-feature.md +2 -2
- package/src/monorepo/.claude/prompt-snippets/tasks.md +49 -87
- package/src/monorepo/.claude/rules-snippets/documentation.md +8 -6
- package/src/monorepo/.cursor/agents/factory-approver.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-builder.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-code.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-security.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/monorepo/.cursor/agents/factory-spec-writer.agent.md +11 -0
- package/src/monorepo/.cursor/commands/factory.md +24 -0
- package/src/monorepo/.github/agents/factory-approver.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-builder.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-code.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-security.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/monorepo/.github/agents/factory-spec-writer.agent.md +11 -0
- package/src/monorepo/.github/prompts/factory.prompt.md +25 -0
- package/src/monorepo/.github/prompts/review-staged.prompt.md +1 -1
- package/src/monorepo/.opencode/agents/admin-portal.md +10 -4
- package/src/monorepo/.opencode/agents/api-specialist.md +10 -4
- package/src/monorepo/.opencode/agents/backend-architect.md +10 -4
- package/src/monorepo/.opencode/agents/documenter.md +10 -4
- package/src/monorepo/.opencode/agents/factory-approver.md +20 -0
- package/src/monorepo/.opencode/agents/factory-builder.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-code.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-security.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-ui.md +20 -0
- package/src/monorepo/.opencode/agents/factory-reviewer-ux.md +20 -0
- package/src/monorepo/.opencode/agents/factory-spec-writer.md +20 -0
- package/src/monorepo/.opencode/agents/feature-builder.md +13 -5
- package/src/monorepo/.opencode/agents/frontend-developer.md +10 -4
- package/src/monorepo/.opencode/agents/green.md +10 -4
- package/src/monorepo/.opencode/agents/implementer.md +10 -4
- package/src/monorepo/.opencode/agents/planner.md +10 -4
- package/src/monorepo/.opencode/agents/red.md +10 -4
- package/src/monorepo/.opencode/agents/refactor.md +10 -4
- package/src/monorepo/.opencode/agents/researcher.md +10 -4
- package/src/monorepo/.opencode/agents/reviewer.md +10 -4
- package/src/monorepo/.opencode/agents/tdd.md +13 -5
- package/src/monorepo/.opencode/commands/factory.md +29 -0
- package/src/monorepo/.opencode/opencode.jsonc +8 -10
- package/src/monorepo/AGENTS.md +30 -1
- package/src/monorepo/CLAUDE.md +1 -1
- package/src/monorepo/README.md +20 -0
- package/src/monorepo/factory/README.md +194 -0
- package/src/monorepo/factory/_gitignore +5 -0
- package/src/repo/.agents/skills/factory/SKILL.md +593 -0
- package/src/repo/.claude/agents/admin-portal.agent.md +1 -1
- package/src/repo/.claude/agents/api-specialist.agent.md +1 -1
- package/src/repo/.claude/agents/backend-architect.agent.md +1 -1
- package/src/repo/.claude/agents/documenter.agent.md +2 -2
- package/src/repo/.claude/agents/factory-approver.agent.md +12 -0
- package/src/repo/.claude/agents/factory-builder.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-code.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-security.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-ui.agent.md +12 -0
- package/src/repo/.claude/agents/factory-reviewer-ux.agent.md +12 -0
- package/src/repo/.claude/agents/factory-spec-writer.agent.md +12 -0
- package/src/repo/.claude/agents/feature-builder.agent.md +1 -1
- package/src/repo/.claude/agents/frontend-developer.agent.md +1 -1
- package/src/repo/.claude/agents/green.agent.md +1 -1
- package/src/repo/.claude/agents/implementer.agent.md +1 -1
- package/src/repo/.claude/agents/planner.agent.md +2 -2
- package/src/repo/.claude/agents/red.agent.md +1 -1
- package/src/repo/.claude/agents/refactor.agent.md +1 -1
- package/src/repo/.claude/agents/researcher.agent.md +2 -2
- package/src/repo/.claude/agents/reviewer.agent.md +2 -2
- package/src/repo/.claude/agents/tdd.agent.md +1 -1
- package/src/repo/.claude/agents-snippets/factory-approver.md +72 -0
- package/src/repo/.claude/agents-snippets/factory-builder.md +100 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-code.md +57 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-security.md +48 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-ui.md +64 -0
- package/src/repo/.claude/agents-snippets/factory-reviewer-ux.md +64 -0
- package/src/repo/.claude/agents-snippets/factory-spec-writer.md +117 -0
- package/src/repo/.claude/agents-snippets/feature-builder.md +1 -1
- package/src/repo/.claude/commands/factory.md +24 -0
- package/src/repo/.claude/commands/ponytail-audit.md +4 -6
- package/src/repo/.claude/commands/ponytail-debt.md +3 -5
- package/src/repo/.claude/commands/ponytail-gain.md +2 -4
- package/src/repo/.claude/commands/ponytail-help.md +2 -4
- package/src/repo/.claude/commands/ponytail-review.md +3 -5
- package/src/repo/.claude/commands/ponytail.md +3 -5
- package/src/repo/.claude/prompt-snippets/assign-tasks.md +6 -2
- package/src/repo/.claude/prompt-snippets/bootstrap-patch.md +32 -17
- package/src/repo/.claude/prompt-snippets/bootstrap-upgrade.md +87 -77
- package/src/repo/.claude/prompt-snippets/bootstrap.md +71 -74
- package/src/repo/.claude/prompt-snippets/factory.md +20 -0
- package/src/repo/.claude/prompt-snippets/implement-feature.md +2 -2
- package/src/repo/.claude/prompt-snippets/tasks.md +49 -112
- package/src/repo/.cursor/agents/factory-approver.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-builder.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-code.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-security.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/repo/.cursor/agents/factory-spec-writer.agent.md +11 -0
- package/src/repo/.cursor/commands/factory.md +24 -0
- package/src/repo/.github/agents/factory-approver.agent.md +11 -0
- package/src/repo/.github/agents/factory-builder.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-code.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-security.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-ui.agent.md +11 -0
- package/src/repo/.github/agents/factory-reviewer-ux.agent.md +11 -0
- package/src/repo/.github/agents/factory-spec-writer.agent.md +11 -0
- package/src/repo/.github/prompts/factory.prompt.md +25 -0
- package/src/repo/.opencode/agents/admin-portal.md +10 -4
- package/src/repo/.opencode/agents/api-specialist.md +10 -4
- package/src/repo/.opencode/agents/backend-architect.md +10 -4
- package/src/repo/.opencode/agents/documenter.md +10 -4
- package/src/repo/.opencode/agents/factory-approver.md +20 -0
- package/src/repo/.opencode/agents/factory-builder.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-code.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-security.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-ui.md +20 -0
- package/src/repo/.opencode/agents/factory-reviewer-ux.md +20 -0
- package/src/repo/.opencode/agents/factory-spec-writer.md +20 -0
- package/src/repo/.opencode/agents/feature-builder.md +13 -5
- package/src/repo/.opencode/agents/frontend-developer.md +10 -4
- package/src/repo/.opencode/agents/green.md +10 -4
- package/src/repo/.opencode/agents/implementer.md +10 -4
- package/src/repo/.opencode/agents/planner.md +10 -4
- package/src/repo/.opencode/agents/red.md +10 -4
- package/src/repo/.opencode/agents/refactor.md +10 -4
- package/src/repo/.opencode/agents/researcher.md +10 -4
- package/src/repo/.opencode/agents/reviewer.md +10 -4
- package/src/repo/.opencode/agents/tdd.md +13 -5
- package/src/repo/.opencode/commands/factory.md +29 -0
- package/src/repo/.opencode/opencode.jsonc +8 -10
- package/src/repo/AGENTS.md +27 -1
- package/src/repo/CLAUDE.md +1 -1
- package/src/repo/README.md +20 -0
- package/src/repo/factory/README.md +194 -0
- package/src/repo/factory/_gitignore +5 -0
- package/src/monorepo/.opencode/plugins/ponytail.mjs +0 -93
- package/src/repo/.opencode/plugins/ponytail.mjs +0 -93
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// ponytail — OpenCode plugin.
|
|
2
|
-
//
|
|
3
|
-
// Injects the ponytail ruleset into every chat's system prompt at the active
|
|
4
|
-
// intensity, and persists /ponytail mode switches. Reuses the shared instruction
|
|
5
|
-
// builder so Claude Code, Codex, pi, and OpenCode all read one source of truth.
|
|
6
|
-
//
|
|
7
|
-
// OpenCode loads this as a server plugin — add it to your opencode.jsonc:
|
|
8
|
-
// { "plugin": ["./.opencode/plugins/ponytail.mjs"] }
|
|
9
|
-
|
|
10
|
-
import { createRequire } from "module";
|
|
11
|
-
import fs from "fs";
|
|
12
|
-
import os from "os";
|
|
13
|
-
import path from "path";
|
|
14
|
-
import { fileURLToPath } from "url";
|
|
15
|
-
|
|
16
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
17
|
-
|
|
18
|
-
// The shared instruction builder is CommonJS; bridge to it from this ES module.
|
|
19
|
-
const require = createRequire(import.meta.url);
|
|
20
|
-
const {
|
|
21
|
-
getPonytailInstructions,
|
|
22
|
-
} = require("../../hooks/ponytail-instructions");
|
|
23
|
-
const {
|
|
24
|
-
getDefaultMode,
|
|
25
|
-
normalizePersistedMode,
|
|
26
|
-
} = require("../../hooks/ponytail-config");
|
|
27
|
-
|
|
28
|
-
// OpenCode has no flag-file convention of its own; keep mode beside its config.
|
|
29
|
-
const statePath = path.join(
|
|
30
|
-
process.env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config"),
|
|
31
|
-
"opencode",
|
|
32
|
-
".ponytail-active",
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
function readMode() {
|
|
36
|
-
try {
|
|
37
|
-
return (
|
|
38
|
-
normalizePersistedMode(fs.readFileSync(statePath, "utf8").trim()) ||
|
|
39
|
-
getDefaultMode()
|
|
40
|
-
);
|
|
41
|
-
} catch (e) {
|
|
42
|
-
return getDefaultMode();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function writeMode(mode) {
|
|
47
|
-
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
48
|
-
fs.writeFileSync(statePath, mode);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export default async ({ client } = {}) => {
|
|
52
|
-
const log = (level, message) => {
|
|
53
|
-
try {
|
|
54
|
-
client &&
|
|
55
|
-
client.app &&
|
|
56
|
-
client.app.log({ body: { service: "ponytail", level, message } });
|
|
57
|
-
} catch (e) {}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const ponytailSkillsDir = path.resolve(__dirname, "../../.agents/skills");
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
// Register skills directory so opencode discovers ponytail skills.
|
|
64
|
-
config: async (config) => {
|
|
65
|
-
config.skills = config.skills || {};
|
|
66
|
-
config.skills.paths = config.skills.paths || [];
|
|
67
|
-
if (!config.skills.paths.includes(ponytailSkillsDir)) {
|
|
68
|
-
config.skills.paths.push(ponytailSkillsDir);
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
// Append the ruleset to the system prompt every turn.
|
|
73
|
-
"experimental.chat.system.transform": async (_input, output) => {
|
|
74
|
-
const mode = readMode();
|
|
75
|
-
if (mode === "off") return;
|
|
76
|
-
output.system.push(getPonytailInstructions(mode));
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
// Persist `/ponytail <level>` so the next turn's injection follows it.
|
|
80
|
-
// ponytail: mode applies from the next message, not the current one — the
|
|
81
|
-
// transform reads the flag the command writes. Good enough; switch to a
|
|
82
|
-
// synchronous store if same-turn switching ever matters.
|
|
83
|
-
"command.execute.before": async (input) => {
|
|
84
|
-
if (!input || input.command !== "ponytail") return;
|
|
85
|
-
// `off` is persisted like any mode; the transform reads it and stays silent.
|
|
86
|
-
const mode =
|
|
87
|
-
normalizePersistedMode((input.arguments || "").trim()) ||
|
|
88
|
-
getDefaultMode();
|
|
89
|
-
writeMode(mode);
|
|
90
|
-
log("info", "ponytail " + mode);
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// ponytail — OpenCode plugin.
|
|
2
|
-
//
|
|
3
|
-
// Injects the ponytail ruleset into every chat's system prompt at the active
|
|
4
|
-
// intensity, and persists /ponytail mode switches. Reuses the shared instruction
|
|
5
|
-
// builder so Claude Code, Codex, pi, and OpenCode all read one source of truth.
|
|
6
|
-
//
|
|
7
|
-
// OpenCode loads this as a server plugin — add it to your opencode.jsonc:
|
|
8
|
-
// { "plugin": ["./.opencode/plugins/ponytail.mjs"] }
|
|
9
|
-
|
|
10
|
-
import { createRequire } from "module";
|
|
11
|
-
import fs from "fs";
|
|
12
|
-
import os from "os";
|
|
13
|
-
import path from "path";
|
|
14
|
-
import { fileURLToPath } from "url";
|
|
15
|
-
|
|
16
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
17
|
-
|
|
18
|
-
// The shared instruction builder is CommonJS; bridge to it from this ES module.
|
|
19
|
-
const require = createRequire(import.meta.url);
|
|
20
|
-
const {
|
|
21
|
-
getPonytailInstructions,
|
|
22
|
-
} = require("../../hooks/ponytail-instructions");
|
|
23
|
-
const {
|
|
24
|
-
getDefaultMode,
|
|
25
|
-
normalizePersistedMode,
|
|
26
|
-
} = require("../../hooks/ponytail-config");
|
|
27
|
-
|
|
28
|
-
// OpenCode has no flag-file convention of its own; keep mode beside its config.
|
|
29
|
-
const statePath = path.join(
|
|
30
|
-
process.env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config"),
|
|
31
|
-
"opencode",
|
|
32
|
-
".ponytail-active",
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
function readMode() {
|
|
36
|
-
try {
|
|
37
|
-
return (
|
|
38
|
-
normalizePersistedMode(fs.readFileSync(statePath, "utf8").trim()) ||
|
|
39
|
-
getDefaultMode()
|
|
40
|
-
);
|
|
41
|
-
} catch (e) {
|
|
42
|
-
return getDefaultMode();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function writeMode(mode) {
|
|
47
|
-
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
48
|
-
fs.writeFileSync(statePath, mode);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export default async ({ client } = {}) => {
|
|
52
|
-
const log = (level, message) => {
|
|
53
|
-
try {
|
|
54
|
-
client &&
|
|
55
|
-
client.app &&
|
|
56
|
-
client.app.log({ body: { service: "ponytail", level, message } });
|
|
57
|
-
} catch (e) {}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const ponytailSkillsDir = path.resolve(__dirname, "../../.agents/skills");
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
// Register skills directory so opencode discovers ponytail skills.
|
|
64
|
-
config: async (config) => {
|
|
65
|
-
config.skills = config.skills || {};
|
|
66
|
-
config.skills.paths = config.skills.paths || [];
|
|
67
|
-
if (!config.skills.paths.includes(ponytailSkillsDir)) {
|
|
68
|
-
config.skills.paths.push(ponytailSkillsDir);
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
// Append the ruleset to the system prompt every turn.
|
|
73
|
-
"experimental.chat.system.transform": async (_input, output) => {
|
|
74
|
-
const mode = readMode();
|
|
75
|
-
if (mode === "off") return;
|
|
76
|
-
output.system.push(getPonytailInstructions(mode));
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
// Persist `/ponytail <level>` so the next turn's injection follows it.
|
|
80
|
-
// ponytail: mode applies from the next message, not the current one — the
|
|
81
|
-
// transform reads the flag the command writes. Good enough; switch to a
|
|
82
|
-
// synchronous store if same-turn switching ever matters.
|
|
83
|
-
"command.execute.before": async (input) => {
|
|
84
|
-
if (!input || input.command !== "ponytail") return;
|
|
85
|
-
// `off` is persisted like any mode; the transform reads it and stays silent.
|
|
86
|
-
const mode =
|
|
87
|
-
normalizePersistedMode((input.arguments || "").trim()) ||
|
|
88
|
-
getDefaultMode();
|
|
89
|
-
writeMode(mode);
|
|
90
|
-
log("info", "ponytail " + mode);
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
};
|