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 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
- - 18 on-demand skills for programming, debugging, frontend, LSP, AST search, TDD, security research, planning, handoffs, goal definition, compression, and related workflows.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "holycodex",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Lean Codex-only agent toolkit for ChatGPT Plus",
5
5
  "keywords": [
6
6
  "agents",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "holycodex",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Lean Codex workflows with routed skills, bounded subagents, scoped rules, Git Bash, and LSP.",
5
5
  "author": {
6
6
  "name": "David Basile Filho",
@@ -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: question, repo scope, deliverable, acceptance criteria, evidence needed, prohibited expansion, stop condition. Inspect only that scope. MUST use git_bash MCP for every shell command. Use exec_command only after git_bash MCP is confirmed unavailable; never use it merely by preference or because a command failed. Search, read, diagnose, or inspect history; never edit, install, research external facts, choose architecture, make final judgments, ask the user, or broaden scope. Stop when criteria are met, evidence is unavailable, scope conflicts, or a write is required. Return exactly: answer; evidence with paths, symbols, commands, and decisive output; uncertainty or blocker; no proposed extra work.
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: question, external scope, deliverable, acceptance criteria, evidence needed, prohibited expansion, stop condition. Research only that scope. MUST use git_bash MCP for every shell command. Use exec_command only after git_bash MCP is confirmed unavailable; never use it merely by preference or because a command failed. Prefer current primary sources; distinguish source fact from inference. Never inspect the repo beyond supplied context, implement, write externally, choose architecture, make final judgments, ask the user, or broaden scope. Stop when criteria are met, authoritative evidence is unavailable or conflicting, or the answer needs repository work. Return exactly: findings; claim-linked citations with source, version or date; conflicts and inference; uncertainty or blocker; no proposed extra work.
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: fixed files and scope, required behavior, acceptance criteria, necessary context, required skills, prohibited expansion, proof, stop condition. Reject or stop on ambiguity, overlap, architecture choice, coupled out-of-scope work, user-work conflict, or missing authority. MUST use git_bash MCP for every shell command. Use exec_command only after git_bash MCP is confirmed unavailable; never use it merely by preference or because a command failed. Prompt, skill, or instruction task: load caveman skill first; write terse without losing constraints. Load required skills before their 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 the smallest specified proof; never claim integration or final verification. Return exactly: changed paths and behavior; tests or checks with result; acceptance criteria status; blocker or residual risk; no proposed extra work.
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
  """
@@ -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.0"),
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.0";
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: MUST use git_bash MCP for every shell command. Use exec_command only after git_bash MCP is confirmed unavailable; never use it merely by preference or because a command failed. 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 useful low-complexity slice that is bounded, independent, unambiguous, and cheaper to integrate than to do locally: explorer=read-only repo facts; librarian=read-only current external facts; worker=isolated implementation. Use skill then subagent when both apply; the skill owns method and gates, the main agent owns decisions, and the subagent owns only its assigned slice. Never delegate trivial work, tightly coupled work, architecture, final judgment, user clarification, integration, or verification. Give only necessary context plus exact scope, deliverable, acceptance criteria, evidence, prohibited expansion, and stop condition. Treat returned work as input: inspect it, resolve conflicts, integrate deliberately, and verify the user outcome. Stop delegation when the packet is satisfied or blocked; never recurse or create organization. Match reasoning effort to complexity. Use GPT 5.6 Luna low for explorer and librarian; use GPT 5.6 Luna medium for worker.";
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.0"
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),
@@ -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.0";
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"]);
@@ -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
- ]) if (typeof input[key] === "string") return isAbsolute(input[key]) ? input[key] : resolve(cwd, input[key]);
119
- const patch = typeof input.patch === "string" ? input.patch : typeof input.input === "string" ? input.input : void 0;
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 TDD it starts from a symptom.
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 existing product identity. Keep scope small. Avoid generic AI styling. Do not force `DESIGN.md`, research, dependencies, GSAP, or heavy QA.
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: theme or visual direction, typography, layout and density, color and surfaces, asset role, interaction and motion, responsive behavior, and accessibility or state treatment. Preserve established decisions unless change is requested.
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
- ## Mandatory GPT Taste route
27
+ ## GPT Taste route
28
28
 
29
- - During the approval decision set, emit `<design_plan>` with deterministic prompt-derived selection: one hero, one approved font stack (`Satoshi`, `Cabinet Grotesk`, `Outfit`, or `Geist`; never `Inter`), three component architectures, two GSAP paradigms. Do not repeat a default combination or replace an established type contract.
30
- - Follow AIDA: premium nav; Attention hero; Interest bento/features; Desire scroll/media; Action CTA/footer. Separate chapters with `py-32 md:py-48`.
31
- - Select cinematic center, artistic asymmetry, or editorial split. Build one hero: wide `max-w-5xl`/`max-w-6xl` H1, responsive `clamp`, maximum 2–3 lines, strong art direction, perfect button contrast, no stamp icons, pill tags, or raw stats.
32
- - Build dense gapless bento: 3–5 intentional cards, `grid-flow-dense`, spans proven to fill every cell, mixed imagery/type/CSS effects, no dead corners or empty cards.
33
- - Use contextual `https://picsum.photos/seed/{keyword}/1920/1080` assets; art-direct coherent grayscale/blend/contrast/opacity with subtle radial blur, grain mesh, or dark overlays.
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. Keep semantics and keyboard behavior.
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 contrast, focus, labels, reduced motion, loading, error, empty state when in scope.
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 when a complex, risky, ambiguous, or multi-stage task needs an approved plan before implementation; do not use for 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.
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, TDD, or refactor may additionally own the workflow.
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
- Public behavior red first. Confirm intended failure. Minimum green. Refactor. Use real object or fake before mock. Deterministic fixture; no sleep. At least one end-to-end user outcome for a new feature. Run smallest test in loop.
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` string or list for path match. 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.
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.