holycodex 0.5.0 → 0.5.2
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 +2 -1
- package/package.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/agents/explorer.toml +1 -1
- package/plugin/agents/librarian.toml +1 -1
- package/plugin/agents/worker.toml +1 -1
- package/plugin/runtime/cli.js +2 -2
- package/plugin/runtime/core-instructions.js +1 -1
- package/plugin/runtime/git-bash.js +5 -5
- package/plugin/runtime/lsp.js +1 -1
- package/plugin/runtime/rules.js +26 -5
- package/plugin/skills/debugging/SKILL.md +1 -1
- package/plugin/skills/frontend/SKILL.md +11 -20
- package/plugin/skills/plan/SKILL.md +1 -1
- package/plugin/skills/programming/SKILL.md +2 -2
- package/plugin/skills/rules/SKILL.md +1 -1
- package/plugin/skills/comment-checker/SKILL.md +0 -8
- package/plugin/skills/tdd/SKILL.md +0 -24
- package/plugin/skills/tdd/mocking.md +0 -5
- package/plugin/skills/tdd/tests.md +0 -7
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ HolyCodex is a modified, standalone Codex-only hard fork of [oh-my-openagent](ht
|
|
|
6
6
|
|
|
7
7
|
HolyCodex installs one focused Codex toolkit:
|
|
8
8
|
|
|
9
|
-
-
|
|
9
|
+
- 16 on-demand skills for programming, debugging, frontend, LSP, AST search, security research, planning, handoffs, goal definition, compression, and related workflows.
|
|
10
10
|
- Three optional subagents: `explorer` for internal inspection, `librarian` for external research, and `worker` for bounded implementation.
|
|
11
11
|
- Three MCP defaults: `git_bash`, `lsp`, and `context7`.
|
|
12
12
|
- Small command hooks for readiness and scoped rules.
|
|
@@ -22,6 +22,7 @@ Large always-on prompts, agent hierarchies, review loops, and duplicated context
|
|
|
22
22
|
- Rules are path-scoped, size-limited, cached, and deduplicated; `AGENTS.md` is never reinjected.
|
|
23
23
|
- Concurrent delegation is capped at two; every delegated slice has fixed scope, evidence, acceptance, and stop conditions under primary-agent control.
|
|
24
24
|
- Explorer and librarian use GPT-5.6 Luna low; worker uses GPT-5.6 Luna medium.
|
|
25
|
+
- Git Bash shell execution is required only on native Windows when its MCP run tool is available; other environments use their native shell directly.
|
|
25
26
|
- OMO workflows and retained references are rewritten with caveman-style token efficiency.
|
|
26
27
|
- The OMO frontend skill is merged with GPT Taste instead of shipping another overlapping skill.
|
|
27
28
|
|
package/package.json
CHANGED
|
@@ -2,5 +2,5 @@ description = "Use for a narrow, read-only repository fact question with explici
|
|
|
2
2
|
model = "gpt-5.6-luna"
|
|
3
3
|
model_reasoning_effort = "low"
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
Start: "I detect investigation intent — [reason]. [action]." Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Accept one task packet
|
|
5
|
+
Start: "I detect investigation intent — [reason]. [action]." Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Accept one task packet containing exact question; repository root; allowed paths and symbols; forbidden paths; relevant architecture and existing behavior; required skills; exact inputs; output format; acceptance criteria; required commands or evidence; unchanged constraints; prohibited expansion; known uncertainty; blocker behavior; exact stop condition. Reject incomplete or ambiguous packets. Inspect only assigned scope. On native Windows, before any shell call resolve `mcp__git_bash__run` from the full callable registry, including deferred tools, and use it when available; otherwise use native shell directly. Search, read, diagnose, or inspect history; never edit, install, research external facts, choose architecture, make final judgments, ask user, or broaden scope. Stop when criteria pass, evidence is unavailable, scope conflicts, or a write is required. Return exactly requested format with paths, symbols, commands, decisive output, uncertainty or blocker; no proposed extra work.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@ description = "Use for a narrow current external-fact question requiring primary
|
|
|
2
2
|
model = "gpt-5.6-luna"
|
|
3
3
|
model_reasoning_effort = "low"
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
Start: "I detect research intent — [reason]. [action]." Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Accept one task packet
|
|
5
|
+
Start: "I detect research intent — [reason]. [action]." Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Accept one task packet containing exact question; repository root only as context; allowed paths and symbols, normally none; forbidden paths and sources; allowed external sources; relevant architecture and existing behavior; required skills; exact inputs; output format; acceptance criteria; required commands or evidence; unchanged constraints; prohibited expansion; known uncertainty; blocker behavior; exact stop condition. Reject incomplete or ambiguous packets. On native Windows, before any shell call resolve `mcp__git_bash__run` from the full callable registry, including deferred tools, and use it when available; otherwise use native shell directly. Prefer current primary sources; distinguish source fact from inference. Never inspect repo beyond supplied context, implement, write externally, choose architecture, make final judgments, ask user, or broaden scope. Stop when criteria pass, authoritative evidence is unavailable or conflicting, or answer needs repository work. Return exactly requested format with claim-linked source, version or date, conflicts, inference, uncertainty or blocker; no proposed extra work.
|
|
6
6
|
"""
|
|
@@ -2,5 +2,5 @@ description = "Use for an isolated implementation slice with fixed files and acc
|
|
|
2
2
|
model = "gpt-5.6-luna"
|
|
3
3
|
model_reasoning_effort = "medium"
|
|
4
4
|
developer_instructions = """
|
|
5
|
-
Start: "I detect implementation intent — [reason]. [action]." Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Accept one task packet
|
|
5
|
+
Start: "I detect implementation intent — [reason]. [action]." Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Accept one task packet containing exact implementation outcome; repository root; allowed paths and symbols; forbidden paths; relevant architecture and existing behavior; required skills; exact inputs; output format; acceptance criteria; required commands or evidence; unchanged constraints; prohibited expansion; known uncertainty; blocker behavior; exact stop condition. Reject or stop on ambiguity, overlap, architecture choice, coupled out-of-scope work, user-work conflict, or missing authority. On native Windows, before any shell call resolve `mcp__git_bash__run` from the full callable registry, including deferred tools, and use it when available; otherwise use native shell directly. Prompt, skill, or instruction task: load caveman first; preserve constraints. Load required skills before governed action. Change only assigned files. Preserve architecture, API, behavior, naming, style, and user work. Add no speculative cleanup, abstraction, dependency, docs, or scope. Run specified proof; never claim integration or final verification. Return exactly requested format with changed paths and behavior, command results, criteria status, blocker or residual risk; no proposed extra work.
|
|
6
6
|
"""
|
package/plugin/runtime/cli.js
CHANGED
|
@@ -122,7 +122,7 @@ function paths(home = process.env.CODEX_HOME ?? join(homedir(), ".codex")) {
|
|
|
122
122
|
config: join(home, "config.toml"),
|
|
123
123
|
marketplaceCache,
|
|
124
124
|
cacheRoot,
|
|
125
|
-
cache: join(cacheRoot, "0.5.
|
|
125
|
+
cache: join(cacheRoot, "0.5.2"),
|
|
126
126
|
agents: join(home, "holycodex", "agents"),
|
|
127
127
|
legacy: [
|
|
128
128
|
join(home, "plugins", "cache", "sisyphuslabs", "omo"),
|
|
@@ -210,7 +210,7 @@ async function cleanup(_options) {
|
|
|
210
210
|
}
|
|
211
211
|
//#endregion
|
|
212
212
|
//#region src/cli.ts
|
|
213
|
-
var VERSION = "0.5.
|
|
213
|
+
var VERSION = "0.5.2";
|
|
214
214
|
var HELP = `HolyCodex ${VERSION}\n\nUsage: holycodex <install|cleanup> [options]\n\nOptions:\n --help Show help\n --version Show version\n --no-tui Accepted; commands are noninteractive\n --codex-autonomous Set autonomous Codex permissions (default)\n --no-codex-autonomous Preserve existing Codex permissions\n --json Print machine-readable result\n`;
|
|
215
215
|
async function main() {
|
|
216
216
|
const args = process$1.argv.slice(2);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/core-instructions.ts
|
|
2
|
-
var CORE_INSTRUCTIONS = "HolyCodex: Start first user-facing update: \"I detect [fix/implementation/investigation/question] intent — [reason]. [action].\" Act. Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Shell:
|
|
2
|
+
var CORE_INSTRUCTIONS = "HolyCodex: Start first user-facing update: \"I detect [fix/implementation/investigation/question] intent — [reason]. [action].\" Act. Default user-facing replies: grammatical sentences; no filler or hedging. Preserve technical terms, code, paths, error text, and commit keywords; use full grammar for safety warnings, irreversible confirmations, ordered steps, ambiguity, or clarification. Shell: on native Windows, before any shell call resolve `mcp__git_bash__run` from the full callable registry, including deferred tools, and use it when available; otherwise use the native shell directly. Prompt, skill, or instruction edit: load caveman; preserve constraints. Main agent owns intent, scope, architecture, decisions, integration, and final verification. Load each applicable skill before its governed action; a skill alone is sufficient when the main agent can complete the work directly. Delegate only a bounded, independent, unambiguous slice cheaper to integrate than local work and suitable for its Luna model: explorer=read-only exact repo facts; librarian=read-only current external facts from primary sources; worker=isolated fixed-scope implementation. Never delegate trivial or coupled work, architecture, user clarification, integration, final judgment, or final verification. Every packet states exact question or outcome; repository root; allowed paths and symbols; forbidden paths; relevant architecture and existing behavior; required skills; exact inputs; output format; acceptance criteria; required commands or evidence; unchanged constraints; prohibited expansion; known uncertainty; blocker behavior; exact stop condition. Use concrete names, paths, APIs, functions, tests, versions, and expected observations when known; include no unrelated transcript. Treat returns as input: inspect, reconcile, integrate, and verify. Stop when packet is satisfied or blocked; never recurse or create agent organizations. Use GPT 5.6 Luna low for explorer and librarian; use GPT 5.6 Luna medium for worker.";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { CORE_INSTRUCTIONS as t };
|
|
@@ -166,7 +166,7 @@ async function handleGitBashMcpRequest(input, options = {}) {
|
|
|
166
166
|
capabilities: { tools: { listChanged: false } },
|
|
167
167
|
serverInfo: {
|
|
168
168
|
name: "git_bash",
|
|
169
|
-
version: "0.5.
|
|
169
|
+
version: "0.5.2"
|
|
170
170
|
},
|
|
171
171
|
protocolVersion: protocolVersionFromInput(input) ?? "2024-11-05"
|
|
172
172
|
});
|
|
@@ -186,7 +186,7 @@ async function runMcpStdioServer(input, output, options = {}) {
|
|
|
186
186
|
handler: handleGitBashMcpRequest,
|
|
187
187
|
handlerOptions: options,
|
|
188
188
|
idleTimeoutMs: 0,
|
|
189
|
-
log: options.lifecycleLog,
|
|
189
|
+
...options.lifecycleLog === void 0 ? {} : { log: options.lifecycleLog },
|
|
190
190
|
parseErrorResponse: () => errorResponse(null, -32601, "Method not found")
|
|
191
191
|
});
|
|
192
192
|
}
|
|
@@ -210,7 +210,7 @@ async function runToolResponse(id, args, options) {
|
|
|
210
210
|
const result = await (options.runGitBash ?? runGitBashCommand)({
|
|
211
211
|
bashPath: resolution.path,
|
|
212
212
|
command,
|
|
213
|
-
cwd,
|
|
213
|
+
...cwd === void 0 ? {} : { cwd },
|
|
214
214
|
timeoutMs,
|
|
215
215
|
env: options.env ?? process.env
|
|
216
216
|
});
|
|
@@ -275,8 +275,8 @@ function canRunGitBash(options) {
|
|
|
275
275
|
}
|
|
276
276
|
function resolve$1(options) {
|
|
277
277
|
if (options.exists === void 0 && options.where === void 0) return resolveGitBashForCurrentProcess({
|
|
278
|
-
platform: options.platform,
|
|
279
|
-
env: options.env
|
|
278
|
+
...options.platform === void 0 ? {} : { platform: options.platform },
|
|
279
|
+
...options.env === void 0 ? {} : { env: options.env }
|
|
280
280
|
});
|
|
281
281
|
return resolveGitBash({
|
|
282
282
|
platform: platformFromOptions(options),
|
package/plugin/runtime/lsp.js
CHANGED
|
@@ -3072,7 +3072,7 @@ function coerceToolArguments(value) {
|
|
|
3072
3072
|
//#endregion
|
|
3073
3073
|
//#region packages/lsp-core/src/mcp.ts
|
|
3074
3074
|
var SERVER_NAME = "lsp";
|
|
3075
|
-
var SERVER_VERSION = "0.5.
|
|
3075
|
+
var SERVER_VERSION = "0.5.2";
|
|
3076
3076
|
async function handleLspMcpRequest(input) {
|
|
3077
3077
|
if (!isPlainRecord(input)) return errorResponse(null, -32600, "Invalid Request");
|
|
3078
3078
|
const id = jsonRpcId(input["id"]);
|
package/plugin/runtime/rules.js
CHANGED
|
@@ -74,13 +74,31 @@ function parseRule(text) {
|
|
|
74
74
|
body: text.trim()
|
|
75
75
|
};
|
|
76
76
|
const header = text.slice(4, end);
|
|
77
|
-
const globs = [...(/^globs:\s*(.+)$/m.exec(header)?.[1] ?? "").matchAll(/["']([^"']+)["']/g)].map((match) => match[1]).filter((value) => value !== void 0);
|
|
78
77
|
return {
|
|
79
78
|
alwaysApply: /^alwaysApply:\s*true\s*$/m.test(header),
|
|
80
|
-
globs,
|
|
79
|
+
globs: parseGlobs(header),
|
|
81
80
|
body: text.slice(end + 5).trim()
|
|
82
81
|
};
|
|
83
82
|
}
|
|
83
|
+
function parseGlobs(header) {
|
|
84
|
+
const lines = header.split("\n");
|
|
85
|
+
const index = lines.findIndex((line) => /^globs\s*:/.test(line));
|
|
86
|
+
if (index < 0) return [];
|
|
87
|
+
const value = lines[index]?.replace(/^globs\s*:\s*/, "").trim() ?? "";
|
|
88
|
+
if (value.length > 0) return (value.startsWith("[") && value.endsWith("]") ? value.slice(1, -1) : value).split(",").map(unquote).filter((glob) => glob.length > 0);
|
|
89
|
+
const globs = [];
|
|
90
|
+
for (const line of lines.slice(index + 1)) {
|
|
91
|
+
const item = /^\s+-\s*(.+?)\s*$/.exec(line)?.[1];
|
|
92
|
+
if (item === void 0) break;
|
|
93
|
+
const glob = unquote(item);
|
|
94
|
+
if (glob.length > 0) globs.push(glob);
|
|
95
|
+
}
|
|
96
|
+
return globs;
|
|
97
|
+
}
|
|
98
|
+
function unquote(value) {
|
|
99
|
+
const trimmed = value.trim();
|
|
100
|
+
return trimmed.length >= 2 && (trimmed.startsWith("\"") && trimmed.endsWith("\"") || trimmed.startsWith("'") && trimmed.endsWith("'")) ? trimmed.slice(1, -1) : trimmed;
|
|
101
|
+
}
|
|
84
102
|
function globMatches(glob, path) {
|
|
85
103
|
const normalized = path.replaceAll("\\", "/");
|
|
86
104
|
const pattern = glob.replaceAll("\\", "/").replace(/[.+^${}()|[\]\\]/g, "\\$&").replaceAll("**", "\0").replaceAll("*", "[^/]*").replaceAll("\0", ".*");
|
|
@@ -108,15 +126,18 @@ async function readable(path) {
|
|
|
108
126
|
}
|
|
109
127
|
function editPath(value, cwd) {
|
|
110
128
|
if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
|
|
111
|
-
const input = value;
|
|
129
|
+
const input = new Map(Object.entries(value));
|
|
112
130
|
for (const key of [
|
|
113
131
|
"filePath",
|
|
114
132
|
"file_path",
|
|
115
133
|
"path",
|
|
116
134
|
"targetPath",
|
|
117
135
|
"target_path"
|
|
118
|
-
])
|
|
119
|
-
|
|
136
|
+
]) {
|
|
137
|
+
const candidate = input.get(key);
|
|
138
|
+
if (typeof candidate === "string") return isAbsolute(candidate) ? candidate : resolve(cwd, candidate);
|
|
139
|
+
}
|
|
140
|
+
const patch = typeof input.get("patch") === "string" ? input.get("patch") : typeof input.get("input") === "string" ? input.get("input") : void 0;
|
|
120
141
|
const path = patch === void 0 ? void 0 : /^\*\*\* (?:Add|Update) File: (.+)$/m.exec(patch)?.[1]?.trim();
|
|
121
142
|
return path === void 0 ? void 0 : resolve(cwd, path);
|
|
122
143
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: debugging
|
|
3
|
-
description: Use when a task involves a crash, wrong result, hang, race, leak, slowdown, or other reproducible defect that needs root-cause proof; do not use for feature work, behavior-preserving refactors, or speculative cleanup. Produces reproduction, evidence, regression proof, and an authorized minimal fix; unlike
|
|
3
|
+
description: Use when a task involves a crash, wrong result, hang, race, leak, slowdown, or other reproducible defect that needs root-cause proof; do not use for feature work, behavior-preserving refactors, or speculative cleanup. Produces reproduction, evidence, regression proof, and an authorized minimal fix; unlike programming it owns symptom-to-cause diagnosis.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Debugging
|
|
@@ -5,12 +5,12 @@ description: Use when a task needs frontend, web UI, UX, visual design, interact
|
|
|
5
5
|
|
|
6
6
|
# Frontend
|
|
7
7
|
|
|
8
|
-
Preserve stack, behavior, tokens, patterns, supplied visual contract, and
|
|
8
|
+
Preserve stack, behavior, tokens, patterns, supplied visual contract, and product identity. Keep scope small. Avoid generic AI styling. Do not force `DESIGN.md`, research, dependencies, GSAP, or heavy QA.
|
|
9
9
|
|
|
10
10
|
## Approval sequence
|
|
11
11
|
|
|
12
12
|
1. Load `frontend`; inspect the request, product shell, target surface, design tokens, nearest pattern, responsive contract, supplied references, and relevant states.
|
|
13
|
-
2. Select only material design decisions:
|
|
13
|
+
2. Select only material design decisions: visual direction, typography, layout and density, color and surfaces, assets, responsive behavior, applicable states, plus a motion system and accessibility treatment for every task. Define how motion communicates hierarchy, state, interaction, continuity, or navigation; keep it proportional. Define `prefers-reduced-motion`, keyboard operation, focus visibility, semantics, contrast, and labels. Preserve established decisions unless change is requested.
|
|
14
14
|
3. Present the compact decision set with existing constraints and ask for approval before implementation. For a fix, audit, accessibility, or performance task, include only decisions that alter user-visible design; diagnosis and technical implementation details need no approval.
|
|
15
15
|
4. After approval, ask whether the user wants to define a goal. Only after explicit agreement load `define-goal`; otherwise implement.
|
|
16
16
|
|
|
@@ -24,26 +24,17 @@ Approval owns visible direction and material interaction changes. Existing compo
|
|
|
24
24
|
- Palette/type/style: load only relevant `references/ui-ux-db` data.
|
|
25
25
|
- Motion-rich premium React/Tailwind page creation or redesign: mandatory GPT Taste route below. Ordinary fixes, debugging, accessibility, and performance work stay on normal route.
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## GPT Taste route
|
|
28
28
|
|
|
29
|
-
- During
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
- Select three architectures: inline heading image, horizontal expanding accordion, infinite partner marquee, restrained testimonial carousel, pinned gallery, or stacked cards.
|
|
35
|
-
- Use real GSAP with `@gsap/react` and `ScrollTrigger`. Select two systems: pinned title/gallery split, image scale/fade scroll, scrubbed word reveal, or stacked cards. Motion explains hierarchy, state, or navigation; static interface fails. Interactive images/cards use slow contained scale hover.
|
|
36
|
-
- Wrap page: `<main className="overflow-x-hidden w-full max-w-full">`.
|
|
29
|
+
- During approval, emit `<design_plan>` with prompt-derived visual direction, type, layout, motion, responsive, accessibility, and state choices. Established contracts win.
|
|
30
|
+
- Treat AIDA, bento layouts, font shortlists, GSAP, Picsum, component counts, and named motion patterns as options only when they fit product, task, and stack.
|
|
31
|
+
- For each chosen pattern, state its user-facing purpose and containment. Do not add dependencies or remote assets unless approved and required.
|
|
32
|
+
- Motion is required but may be subtle. Avoid gratuitous, blocking, performance-heavy, or reduced-motion-unsafe effects.
|
|
33
|
+
- Prevent horizontal overflow, clipped content, dead layouts, empty cards, fake dashboards, copied text, and inaccessible interaction.
|
|
37
34
|
|
|
38
35
|
Ban emojis; cheap/generic meta-labels (`SECTION 01`, `QUESTION 05`, `ABOUT US`); invisible button text; empty bento cells/cards; narrow multi-line/centered heroes; repeated left/right or flat sections/backgrounds; stock-feeling imagery; fake dashboards; meaningless gradients; copied reference text.
|
|
39
36
|
|
|
40
|
-
Required `<design_plan>`:
|
|
41
|
-
|
|
42
|
-
1. Three-line deterministic selection: hero, font stack, three architectures, two GSAP systems.
|
|
43
|
-
2. AIDA map.
|
|
44
|
-
3. H1 max-width and 2–3-line proof; confirm no stamps/tags.
|
|
45
|
-
4. Grid-span math and `grid-flow-dense` proof.
|
|
46
|
-
5. Meta-label sweep and button-contrast check.
|
|
37
|
+
Required `<design_plan>`: visible direction; layout and responsive contract; asset role; motion purpose and reduced-motion fallback; accessibility treatment; applicable loading, error, and empty states. Include only chosen patterns, not a fixed architecture count.
|
|
47
38
|
|
|
48
39
|
Only after approval and optional goal choice may implementation begin.
|
|
49
40
|
|
|
@@ -51,9 +42,9 @@ Only after approval and optional goal choice may implementation begin.
|
|
|
51
42
|
|
|
52
43
|
1. Inspect target and nearest established pattern.
|
|
53
44
|
2. Lock visual direction: type, spacing, surfaces, color, asset role, motion role.
|
|
54
|
-
3. Implement smallest coherent slice
|
|
45
|
+
3. Implement smallest coherent slice with purposeful motion, reduced-motion behavior, keyboard operation, visible focus, semantic structure, contrast, and labels.
|
|
55
46
|
4. Test narrow/mobile/wide containment. No horizontal leak, clipped text, overlap, or unreadable measure.
|
|
56
|
-
5. Check
|
|
47
|
+
5. Check loading, error, and empty states when applicable.
|
|
57
48
|
6. Check interaction and performance proportional to change. Avoid layout shift, oversized media, needless client work.
|
|
58
49
|
|
|
59
50
|
Use real assets when supplied. Never invent research or claim screenshot parity without visual comparison.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan
|
|
3
|
-
description: Use when the user asks for a plan or
|
|
3
|
+
description: Use when the user asks for a plan or implementation requires unresolved architecture, cross-cutting coordination, irreversible decisions, high risk, or material ambiguity; do not use for multiple obvious steps, simple direct work, status, or explanation. Produces one repo-grounded reviewed plan with approval and optional goal gates; unlike plan-review, it owns the full planning sequence.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Plan
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: programming
|
|
3
|
-
description: Use when a task edits Python, Rust, TypeScript, Go, or their matching manifests; do not use for prose-only edits or unsupported languages. Applies language-specific correctness, typing, size, and verification rules; debugging
|
|
3
|
+
description: Use when a task edits Python, Rust, TypeScript, Go, or their matching manifests; do not use for prose-only edits or unsupported languages. Applies language-specific correctness, typing, size, and verification rules; debugging or refactor may additionally own the workflow.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Programming
|
|
@@ -22,7 +22,7 @@ Before editing `.py`, `.pyi`, `.rs`, `.ts`, `.tsx`, `.mts`, `.cts`, `.go`, or ma
|
|
|
22
22
|
|
|
23
23
|
## Test
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Defect: add a public-seam regression test first and confirm the intended failure. Explicit test-first request or clearly defined new behavior without adequate proof: test public seam first, confirm failure, implement minimum green, then refactor. Existing tests may lock small covered changes. Do not force red-green for prose, configuration-only work, trivial mechanical edits, or behavior already adequately covered. Use real object or fake before mock. Deterministic fixture; no sleep. Add an end-to-end user outcome for new behavior when proportional. Run smallest test in loop.
|
|
26
26
|
|
|
27
27
|
## Size
|
|
28
28
|
|
|
@@ -9,7 +9,7 @@ Automatic when plugin enabled. Static rules load on session start and user promp
|
|
|
9
9
|
|
|
10
10
|
Sources: `CONTEXT.md`, `.holycodex/rules/**/*.md`, `.codex/rules/**/*.md`, `.github/instructions/**/*.md`, `.github/copilot-instructions.md`. Never load or reinject `AGENTS.md`.
|
|
11
11
|
|
|
12
|
-
Frontmatter: `alwaysApply: true` for static rule; `globs`
|
|
12
|
+
Frontmatter: `alwaysApply: true` for static rule; `globs` accepts quoted or unquoted scalar, inline array, or multiline array. Body after frontmatter is injected. Native and plugin rules dedupe by normalized content hash. Per-rule cap 8,000 chars; event cap 24,000 chars.
|
|
13
13
|
|
|
14
14
|
Environment: `HOLYCODEX_RULES_DISABLED=1`, `HOLYCODEX_RULES_MAX_RULE_CHARS`, `HOLYCODEX_RULES_MAX_RESULT_CHARS`.
|
|
15
15
|
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: comment-checker
|
|
3
|
-
description: Use when an edit produces a comment-checker warning that must be fixed or explained; do not use for ordinary comments, lint output, or before an edit. Produces a disposition for every blocking warning; unlike programming checks it handles the edit hook only.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Comment Checker
|
|
7
|
-
|
|
8
|
-
After successful `apply_patch`, `write`, `edit`, `multi_edit`, or `multiedit`, fix or explain any blocking warning before continuing. Non-edit tools are ignored. No MCP tool exists. Missing checker binaries produce no output.
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tdd
|
|
3
|
-
description: Use when a task requests TDD, regression coverage, integration tests, or a public-seam failing test before implementation; do not use for test inspection, unrelated failures, or work with adequate existing proof. Produces deterministic red-green-refactor slices; unlike debugging it governs test-first delivery after behavior is known.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# TDD
|
|
7
|
-
|
|
8
|
-
Find established seam before asking user. Ask only if materially different contracts remain.
|
|
9
|
-
|
|
10
|
-
## Slice
|
|
11
|
-
|
|
12
|
-
1. Pick one observable outcome.
|
|
13
|
-
2. Red: test public seam. Run it. Confirm failure matches missing behavior, not setup error.
|
|
14
|
-
3. Green: minimum production code. No second case yet.
|
|
15
|
-
4. Refactor only with green test.
|
|
16
|
-
5. Repeat vertical slice.
|
|
17
|
-
|
|
18
|
-
Given/When/Then: known fixture; one action; only observable result caused by action.
|
|
19
|
-
|
|
20
|
-
Reject private-method tests, tautology, snapshot abuse, broad mocking, sleeps, wall-clock dependence, implementation-coupled assertions, deleted failing tests.
|
|
21
|
-
|
|
22
|
-
Test doubles order: real object; in-memory fake; test container or sandbox; wire fake; narrow mock last. Fake must honor real contract.
|
|
23
|
-
|
|
24
|
-
Fixtures deterministic and isolated. Coverage proportional to risk. Run smallest test during loop; broader gates at completion. See `tests.md` and `mocking.md` only when needed.
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
# Mocking
|
|
2
|
-
|
|
3
|
-
Prefer real objects, test databases, or fakes. Mock only system boundaries: external APIs, time, randomness, and sometimes databases or filesystems. Never mock owned classes or internal collaborators.
|
|
4
|
-
|
|
5
|
-
Inject boundary dependencies. Expose one typed operation per external action instead of a generic conditional fetcher; each mock then has one input and result shape.
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Tests
|
|
2
|
-
|
|
3
|
-
Test caller-visible behavior through public interfaces. Good tests survive refactors, use known literal expectations, perform one action, and assert its observable result.
|
|
4
|
-
|
|
5
|
-
Reject tests of private methods, internal calls, call counts, storage inspected behind the public interface, snapshots without a stable contract, or expected values recomputed by production logic. These test implementation, not behavior.
|
|
6
|
-
|
|
7
|
-
Example: after `createUser`, verify `getUser(id)` returns the user; do not query the database directly.
|