minimal-vibe-coding-kit 0.4.0 → 0.4.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.
Files changed (96) hide show
  1. package/.agents/skills/agentshield-security-review/scripts/agentshield_repo_probe.py +28 -3
  2. package/.agents/skills/coding-level/SKILL.md +8 -1
  3. package/.agents/skills/path-sensitive-shell-safety/SKILL.md +1 -0
  4. package/.agents/skills/prompt-sharpener/SKILL.md +54 -0
  5. package/.agents/skills/vibekit-init/SKILL.md +2 -2
  6. package/.claude/rules/safe-delete.md +11 -0
  7. package/.claude/settings.json +10 -3
  8. package/.claude/skills/agentshield-security-review/scripts/agentshield_repo_probe.py +28 -3
  9. package/.claude/skills/coding-level/SKILL.md +8 -1
  10. package/.claude/skills/path-sensitive-shell-safety/SKILL.md +1 -0
  11. package/.claude/skills/prompt-sharpener/SKILL.md +54 -0
  12. package/.claude/skills/vibekit-init/SKILL.md +2 -2
  13. package/.codex/rules/vibekit.rules +77 -0
  14. package/.codex-plugin/plugin.json +1 -1
  15. package/.cursor/cli.json +18 -0
  16. package/.cursor/rules/040-safe-delete.mdc +16 -0
  17. package/.cursor/settings.json +15 -8
  18. package/.cursor/skills/coding-level/SKILL.md +8 -1
  19. package/.cursor/skills/path-sensitive-shell-safety/SKILL.md +1 -0
  20. package/.cursor/skills/prompt-sharpener/SKILL.md +54 -0
  21. package/.grok/README.md +13 -0
  22. package/.grok/config.example.toml +13 -0
  23. package/.grok/config.toml +29 -0
  24. package/.grok/rules/safe-delete.md +11 -0
  25. package/.grok/rules/security.md +5 -0
  26. package/.grok/rules/vibe-core.md +8 -0
  27. package/.grok/skills/agentshield-security-review/SKILL.md +75 -0
  28. package/.grok/skills/agentshield-security-review/agents/openai.yaml +5 -0
  29. package/.grok/skills/agentshield-security-review/references/native-install.md +97 -0
  30. package/.grok/skills/agentshield-security-review/references/report-template.md +54 -0
  31. package/.grok/skills/agentshield-security-review/references/review-checklist.md +45 -0
  32. package/.grok/skills/agentshield-security-review/scripts/agentshield_repo_probe.py +135 -0
  33. package/.grok/skills/autoresearch-coding/README.md +15 -0
  34. package/.grok/skills/autoresearch-coding/SKILL.md +101 -0
  35. package/.grok/skills/autoresearch-coding/references/experiment-contract.md +13 -0
  36. package/.grok/skills/autoresearch-coding/references/metric-extraction.md +8 -0
  37. package/.grok/skills/autoresearch-coding/references/result-ledger.md +15 -0
  38. package/.grok/skills/autoresearch-coding/scripts/log_result.py +24 -0
  39. package/.grok/skills/autoresearch-coding/scripts/run_logged.py +30 -0
  40. package/.grok/skills/clearthought/SKILL.md +100 -0
  41. package/.grok/skills/clearthought/examples/decision-framework.md +441 -0
  42. package/.grok/skills/clearthought/examples/metagame-examples.md +536 -0
  43. package/.grok/skills/clearthought/examples/sequential-thinking.md +380 -0
  44. package/.grok/skills/clearthought/references/output-schemas.md +494 -0
  45. package/.grok/skills/clearthought/references/parameter-reference.md +482 -0
  46. package/.grok/skills/coding-level/SKILL.md +34 -0
  47. package/.grok/skills/coding-level/references/level-0.md +131 -0
  48. package/.grok/skills/coding-level/references/level-1.md +118 -0
  49. package/.grok/skills/coding-level/references/level-2.md +140 -0
  50. package/.grok/skills/coding-level/references/level-3.md +142 -0
  51. package/.grok/skills/coding-level/references/level-4.md +152 -0
  52. package/.grok/skills/coding-level/references/level-5.md +84 -0
  53. package/.grok/skills/daily-workflow-curator/SKILL.md +52 -0
  54. package/.grok/skills/memento/SKILL.md +36 -0
  55. package/.grok/skills/parallel-analysis/SKILL.md +160 -0
  56. package/.grok/skills/path-sensitive-shell-safety/SKILL.md +69 -0
  57. package/.grok/skills/path-sensitive-shell-safety/references/workflow.md +127 -0
  58. package/.grok/skills/prompt-sharpener/SKILL.md +54 -0
  59. package/.grok/skills/reviewing-4p-priorities/SKILL.md +72 -0
  60. package/.grok/skills/reviewing-4p-priorities/examples.md +298 -0
  61. package/.grok/skills/sequential-thinking/SKILL.md +106 -0
  62. package/.grok/skills/sequential-thinking/examples/adaptive-depth.md +542 -0
  63. package/.grok/skills/sequential-thinking/examples/branching-exploration.md +474 -0
  64. package/.grok/skills/sequential-thinking/examples/linear-reasoning.md +210 -0
  65. package/.grok/skills/sequential-thinking/examples/revision-pattern.md +304 -0
  66. package/.grok/skills/sequential-thinking/references/output-schema.md +483 -0
  67. package/.grok/skills/sequential-thinking/references/parameters.md +463 -0
  68. package/.grok/skills/sequential-thinking/references/patterns.md +666 -0
  69. package/.grok/skills/vibekit-init/SKILL.md +52 -0
  70. package/.grok/skills/visual-design-loop/SKILL.md +103 -0
  71. package/.grok/skills/visual-design-loop/agents/openai.yaml +4 -0
  72. package/.vibekit/docs/BACKBONE_REFERENCE.md +1 -1
  73. package/.vibekit/docs/INSTALL.md +21 -7
  74. package/.vibekit/docs/SECURITY_MODEL.md +1 -1
  75. package/.vibekit/docs/TOOLING_GUIDE.md +5 -0
  76. package/.vibekit/docs/templates/CONTEXT_TEMPLATE.md +1 -1
  77. package/.vibekit/init/CLAUDE-template.md +3 -0
  78. package/.vibekit/init/FIRST_PROMPT.md +1 -1
  79. package/.vibekit/init/FIRST_TIME_INIT.md +34 -2
  80. package/.vibekit/scripts/doctor.mjs +27 -5
  81. package/.vibekit/scripts/init-backbone.mjs +9 -0
  82. package/.vibekit/scripts/mvck.mjs +24 -9
  83. package/.vibekit/scripts/test-install.mjs +8 -0
  84. package/.vibekit/scripts/validate-kit.mjs +104 -39
  85. package/.vibekit/skills/agentshield-security-review/scripts/agentshield_repo_probe.py +28 -3
  86. package/.vibekit/skills/coding-level/SKILL.md +8 -1
  87. package/.vibekit/skills/path-sensitive-shell-safety/SKILL.md +1 -0
  88. package/.vibekit/skills/prompt-sharpener/SKILL.md +54 -0
  89. package/.vibekit/skills/vibekit-init/SKILL.md +2 -2
  90. package/AGENTS.md +3 -2
  91. package/CHANGELOG.md +21 -0
  92. package/README.md +60 -19
  93. package/backbone.yml +2 -1
  94. package/docs/README.vi.md +273 -0
  95. package/package.json +8 -3
  96. package/README.vi.md +0 -232
@@ -15,10 +15,11 @@ PATTERNS = {
15
15
  "repo_instructions": ["CLAUDE.md", "AGENTS.md", ".github/copilot-instructions.md"],
16
16
  "claude": [".claude", ".claude-plugin", "agents"],
17
17
  "codex": [".codex", ".codex-plugin"],
18
- "shared_skills": [".vibekit/skills", ".claude/skills", ".cursor/skills", ".agents/skills", "skills"],
18
+ "grok": [".grok"],
19
+ "shared_skills": [".vibekit/skills", ".claude/skills", ".cursor/skills", ".agents/skills", ".grok/skills", "skills"],
19
20
  "shared_commands": [".vibekit/commands"],
20
21
  "kit_scripts": [".vibekit/scripts"],
21
- "hooks": ["hooks", ".claude/hooks", ".agents/hooks"],
22
+ "hooks": ["hooks", ".claude/hooks", ".agents/hooks", ".grok/hooks"],
22
23
  "mcp": [".mcp.json", "mcp.json", "mcp-configs"],
23
24
  "ci": [".github/workflows"],
24
25
  }
@@ -55,6 +56,27 @@ def safe_read(path: Path, limit: int = 200_000) -> str:
55
56
  return ""
56
57
 
57
58
 
59
+ def deny_block_lines(text: str) -> set[int]:
60
+ """Line indexes inside a permissions deny array (JSON `"deny": [` or TOML `deny = [`).
61
+
62
+ Deny rules quote dangerous patterns in order to block them, so a marker on
63
+ those lines is defensive, not suspicious. Allow/ask blocks are still scanned.
64
+ """
65
+ covered: set[int] = set()
66
+ inside = False
67
+ for idx, line in enumerate(text.splitlines()):
68
+ stripped = line.strip()
69
+ if not inside and "[" in stripped and ('"deny"' in stripped or stripped.startswith("deny =") or stripped.startswith("deny=")):
70
+ covered.add(idx)
71
+ inside = "]" not in stripped.split("[", 1)[1]
72
+ continue
73
+ if inside:
74
+ covered.add(idx)
75
+ if "]" in stripped:
76
+ inside = False
77
+ return covered
78
+
79
+
58
80
  def main() -> int:
59
81
  parser = argparse.ArgumentParser(description="Inventory Claude/Codex AgentShield surfaces")
60
82
  parser.add_argument("path", nargs="?", default=".", help="Repository root")
@@ -77,8 +99,11 @@ def main() -> int:
77
99
  if file_path.suffix.lower() not in {".md", ".json", ".toml", ".yaml", ".yml", ".sh", ".js", ".ts"}:
78
100
  continue
79
101
  text = safe_read(file_path)
102
+ skip_lines = deny_block_lines(text)
103
+ lines = text.splitlines()
80
104
  for marker in SUSPICIOUS_TEXT:
81
- if marker in text:
105
+ hits = [idx for idx, line in enumerate(lines) if marker in line]
106
+ if any(idx not in skip_lines for idx in hits):
82
107
  suspicious.append({
83
108
  "path": str(file_path.relative_to(root)),
84
109
  "marker": marker,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coding-level
3
- description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
3
+ description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
4
4
  disable-model-invocation: true
5
5
  argument-hint: "[0-5]"
6
6
  ---
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
20
20
 
21
21
  1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
22
22
  2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
23
+ 3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
24
+
25
+ ## Project default
26
+
27
+ - First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
28
+ - Sessions without an explicit `/coding-level` start from that default level.
29
+ - `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
23
30
 
24
31
  ## Scope
25
32
 
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
48
48
 
49
49
  ## Required outcomes
50
50
 
51
+ - Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
51
52
  - A blank branch may follow the documented default-branch fallback policy.
52
53
  - An explicit branch must fail if missing; never silently deploy another branch.
53
54
  - A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: prompt-sharpener
3
+ description: Sharpen a rough prompt into a precise one — same intent, sharper not longer — then execute the sharpened version immediately in the same turn.
4
+ argument-hint: "the rough prompt to sharpen and execute"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Prompt Sharpener
9
+
10
+ The text the user types after the invocation is the **raw prompt**. Upgrade it into a prompt that is **sharper, not longer** — keep the original intent, constraints, and language — then execute the upgraded version immediately in the same turn. No text after the invocation → ask the user what they want and stop.
11
+
12
+ ## Step 1 — Diagnose the raw prompt
13
+
14
+ Scan for every ailment below; each ailment found gets its cure applied directly in the upgraded prompt. Cure silently; call out a cure only when it could shift the user's intent.
15
+
16
+ - Vague verbs or adjectives ("help me", "make it nicer") → concrete, measurable operations and parameters.
17
+ - Two tasks in one prompt → split into an explicit execution order.
18
+ - No success criteria → add a binary pass/fail `Done when`.
19
+ - Emotional description ("everything is broken") → extract the specific technical symptom.
20
+ - "The whole app" scope → pin exact files/functions/directories; coding tasks always get a **scope lock** (edit only inside X, leave the rest untouched).
21
+ - Relies on memory of an old session → copy the decisions already settled in this conversation (stack, architecture, what was tried and failed) into the `Context` block.
22
+ - Invitation to fabricate ("what do experts say about X?") → anchor grounding: state only what can be verified; when unsure, say so explicitly.
23
+ - No output format → fix the structure and length; when the format is hard to describe in words, include 2-3 sample examples (including an edge case) in the `Output Contract`.
24
+
25
+ Done when: the raw prompt has been checked against the full list and no ailment is left without its cure in the upgraded prompt.
26
+
27
+ ## Step 2 — Build the upgraded prompt
28
+
29
+ Classify the task (coding / research / writing / analysis / planning / review), then assemble blocks in this order — add a block only when it raises precision; small tasks need just 2-3 blocks:
30
+
31
+ `Objective` → `Context` → `Work Style` → `Tool Rules` → `Output Contract` → `Verification` → `Done Criteria`
32
+
33
+ Focus per task type:
34
+
35
+ - Coding: scope lock, smallest correct change, validation after the edit — default to the `validate` command in `backbone.yml` when the repo has one.
36
+ - Research: source quality, citations, explicit uncertainty.
37
+ - Writing: audience, voice, length.
38
+ - Review: group findings by severity, name the failure mode.
39
+
40
+ Construction rules:
41
+
42
+ - Write constraints with the strongest signal words: MUST instead of "should", NEVER instead of "avoid".
43
+ - Missing information → state the assumption in `Context` and keep going; stop to ask only when the task is destructive or irreversible.
44
+ - Say _what_ to verify; let the model regulate its own depth of thought.
45
+ - Repo work MUST respect `backbone.yml` conventions and protected paths; when the upgraded task is a large decomposition or a risky decision, its `Work Style` block may direct Step 3 to open with the `sequential-thinking` or `clearthought` skill.
46
+ - Closing audit: reread every sentence; if cutting it would not change the output, cut it — every remaining word is **load-bearing**.
47
+
48
+ Done when the upgraded prompt scores on all 6 points: intent preserved — ambiguity reduced — right depth — clear output — has verification — has a stopping point.
49
+
50
+ ## Step 3 — Present and execute
51
+
52
+ Print the upgraded prompt in a single code block, with at most 2 sentences on the key changes. Then treat it as the user's official request: start executing immediately in the same turn, researching and editing according to its own `Tool Rules`.
53
+
54
+ Done when the upgraded prompt's `Done Criteria` are satisfied.
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: vibekit-init
3
- description: Initialize or repair Minimal Vibe Coding Kit in an existing project. Use for first prompt, backbone.yml setup, CLAUDE.md merge, AGENTS.md merge, Cursor rules setup, or Codex skill setup. Always show requirements and a diff before writing.
3
+ description: Initialize or repair Minimal Vibe Coding Kit in an existing project. Use for first prompt, backbone.yml setup, CLAUDE.md merge, AGENTS.md merge, Cursor rules setup, Codex skill setup, or Grok setup. Always show requirements and a diff before writing.
4
4
  disable-model-invocation: true
5
- argument-hint: target path; profiles claude,cursor,codex; write yes/no
5
+ argument-hint: target path; profiles claude,cursor,codex,grok; write yes/no
6
6
  ---
7
7
 
8
8
  # Vibe Kit Init
@@ -0,0 +1,11 @@
1
+ # Safe delete rules
2
+
3
+ - Never delete permanently by default. Prefer `trash` over `rm`, `rm -rf`, `rmdir`, and `find -delete` so deletions stay recoverable.
4
+ - Before deleting, check availability with `command -v trash`. If available, use `trash <path>`.
5
+ - If `trash` is missing, recommend installing it instead of falling back to `rm`:
6
+ - macOS 14 or newer: built in at `/usr/bin/trash`, nothing to install.
7
+ - Older macOS: `brew install trash` (https://formulae.brew.sh/formula/trash).
8
+ - Linux: `sudo apt install trash-cli` or `pip install trash-cli` (https://github.com/andreafrancia/trash-cli).
9
+ - Any OS with Node.js: `npm install --global trash-cli` (https://github.com/sindresorhus/trash-cli).
10
+ - Permanent deletion requires the user's explicit approval of the exact paths, and the `path-sensitive-shell-safety` skill first when paths come from variables.
11
+ - Honor the deletion preference recorded in `backbone.yml` `conventions.custom_rules` during first-time init.
@@ -6,10 +6,17 @@
6
6
  "Bash(git push:*)",
7
7
  "Bash(git push --force:*)",
8
8
  "Bash(git reset --hard:*)",
9
- "Bash(curl *|*sh:*)",
10
- "Bash(wget *|*sh:*)",
9
+ "Bash(sh)",
10
+ "Bash(sh -)",
11
+ "Bash(bash)",
12
+ "Bash(bash -)",
13
+ "Bash(zsh)",
14
+ "Bash(zsh -)",
15
+ "Bash(npx --yes *)",
16
+ "Bash(npx -y *)",
17
+ "Bash(npx * --yes *)",
18
+ "Bash(npx * -y *)",
11
19
  "Bash(npm publish:*)",
12
- "Bash(npx * --yes:*)",
13
20
  "Bash(migrate *)",
14
21
  "Bash(docker compose up*)",
15
22
  "Bash(docker-compose up*)"
@@ -15,10 +15,11 @@ PATTERNS = {
15
15
  "repo_instructions": ["CLAUDE.md", "AGENTS.md", ".github/copilot-instructions.md"],
16
16
  "claude": [".claude", ".claude-plugin", "agents"],
17
17
  "codex": [".codex", ".codex-plugin"],
18
- "shared_skills": [".vibekit/skills", ".claude/skills", ".cursor/skills", ".agents/skills", "skills"],
18
+ "grok": [".grok"],
19
+ "shared_skills": [".vibekit/skills", ".claude/skills", ".cursor/skills", ".agents/skills", ".grok/skills", "skills"],
19
20
  "shared_commands": [".vibekit/commands"],
20
21
  "kit_scripts": [".vibekit/scripts"],
21
- "hooks": ["hooks", ".claude/hooks", ".agents/hooks"],
22
+ "hooks": ["hooks", ".claude/hooks", ".agents/hooks", ".grok/hooks"],
22
23
  "mcp": [".mcp.json", "mcp.json", "mcp-configs"],
23
24
  "ci": [".github/workflows"],
24
25
  }
@@ -55,6 +56,27 @@ def safe_read(path: Path, limit: int = 200_000) -> str:
55
56
  return ""
56
57
 
57
58
 
59
+ def deny_block_lines(text: str) -> set[int]:
60
+ """Line indexes inside a permissions deny array (JSON `"deny": [` or TOML `deny = [`).
61
+
62
+ Deny rules quote dangerous patterns in order to block them, so a marker on
63
+ those lines is defensive, not suspicious. Allow/ask blocks are still scanned.
64
+ """
65
+ covered: set[int] = set()
66
+ inside = False
67
+ for idx, line in enumerate(text.splitlines()):
68
+ stripped = line.strip()
69
+ if not inside and "[" in stripped and ('"deny"' in stripped or stripped.startswith("deny =") or stripped.startswith("deny=")):
70
+ covered.add(idx)
71
+ inside = "]" not in stripped.split("[", 1)[1]
72
+ continue
73
+ if inside:
74
+ covered.add(idx)
75
+ if "]" in stripped:
76
+ inside = False
77
+ return covered
78
+
79
+
58
80
  def main() -> int:
59
81
  parser = argparse.ArgumentParser(description="Inventory Claude/Codex AgentShield surfaces")
60
82
  parser.add_argument("path", nargs="?", default=".", help="Repository root")
@@ -77,8 +99,11 @@ def main() -> int:
77
99
  if file_path.suffix.lower() not in {".md", ".json", ".toml", ".yaml", ".yml", ".sh", ".js", ".ts"}:
78
100
  continue
79
101
  text = safe_read(file_path)
102
+ skip_lines = deny_block_lines(text)
103
+ lines = text.splitlines()
80
104
  for marker in SUSPICIOUS_TEXT:
81
- if marker in text:
105
+ hits = [idx for idx, line in enumerate(lines) if marker in line]
106
+ if any(idx not in skip_lines for idx in hits):
82
107
  suspicious.append({
83
108
  "path": str(file_path.relative_to(root)),
84
109
  "marker": marker,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coding-level
3
- description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
3
+ description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
4
4
  disable-model-invocation: true
5
5
  argument-hint: "[0-5]"
6
6
  ---
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
20
20
 
21
21
  1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
22
22
  2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
23
+ 3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
24
+
25
+ ## Project default
26
+
27
+ - First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
28
+ - Sessions without an explicit `/coding-level` start from that default level.
29
+ - `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
23
30
 
24
31
  ## Scope
25
32
 
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
48
48
 
49
49
  ## Required outcomes
50
50
 
51
+ - Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
51
52
  - A blank branch may follow the documented default-branch fallback policy.
52
53
  - An explicit branch must fail if missing; never silently deploy another branch.
53
54
  - A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: prompt-sharpener
3
+ description: Sharpen a rough prompt into a precise one — same intent, sharper not longer — then execute the sharpened version immediately in the same turn.
4
+ argument-hint: "the rough prompt to sharpen and execute"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Prompt Sharpener
9
+
10
+ The text the user types after the invocation is the **raw prompt**. Upgrade it into a prompt that is **sharper, not longer** — keep the original intent, constraints, and language — then execute the upgraded version immediately in the same turn. No text after the invocation → ask the user what they want and stop.
11
+
12
+ ## Step 1 — Diagnose the raw prompt
13
+
14
+ Scan for every ailment below; each ailment found gets its cure applied directly in the upgraded prompt. Cure silently; call out a cure only when it could shift the user's intent.
15
+
16
+ - Vague verbs or adjectives ("help me", "make it nicer") → concrete, measurable operations and parameters.
17
+ - Two tasks in one prompt → split into an explicit execution order.
18
+ - No success criteria → add a binary pass/fail `Done when`.
19
+ - Emotional description ("everything is broken") → extract the specific technical symptom.
20
+ - "The whole app" scope → pin exact files/functions/directories; coding tasks always get a **scope lock** (edit only inside X, leave the rest untouched).
21
+ - Relies on memory of an old session → copy the decisions already settled in this conversation (stack, architecture, what was tried and failed) into the `Context` block.
22
+ - Invitation to fabricate ("what do experts say about X?") → anchor grounding: state only what can be verified; when unsure, say so explicitly.
23
+ - No output format → fix the structure and length; when the format is hard to describe in words, include 2-3 sample examples (including an edge case) in the `Output Contract`.
24
+
25
+ Done when: the raw prompt has been checked against the full list and no ailment is left without its cure in the upgraded prompt.
26
+
27
+ ## Step 2 — Build the upgraded prompt
28
+
29
+ Classify the task (coding / research / writing / analysis / planning / review), then assemble blocks in this order — add a block only when it raises precision; small tasks need just 2-3 blocks:
30
+
31
+ `Objective` → `Context` → `Work Style` → `Tool Rules` → `Output Contract` → `Verification` → `Done Criteria`
32
+
33
+ Focus per task type:
34
+
35
+ - Coding: scope lock, smallest correct change, validation after the edit — default to the `validate` command in `backbone.yml` when the repo has one.
36
+ - Research: source quality, citations, explicit uncertainty.
37
+ - Writing: audience, voice, length.
38
+ - Review: group findings by severity, name the failure mode.
39
+
40
+ Construction rules:
41
+
42
+ - Write constraints with the strongest signal words: MUST instead of "should", NEVER instead of "avoid".
43
+ - Missing information → state the assumption in `Context` and keep going; stop to ask only when the task is destructive or irreversible.
44
+ - Say _what_ to verify; let the model regulate its own depth of thought.
45
+ - Repo work MUST respect `backbone.yml` conventions and protected paths; when the upgraded task is a large decomposition or a risky decision, its `Work Style` block may direct Step 3 to open with the `sequential-thinking` or `clearthought` skill.
46
+ - Closing audit: reread every sentence; if cutting it would not change the output, cut it — every remaining word is **load-bearing**.
47
+
48
+ Done when the upgraded prompt scores on all 6 points: intent preserved — ambiguity reduced — right depth — clear output — has verification — has a stopping point.
49
+
50
+ ## Step 3 — Present and execute
51
+
52
+ Print the upgraded prompt in a single code block, with at most 2 sentences on the key changes. Then treat it as the user's official request: start executing immediately in the same turn, researching and editing according to its own `Tool Rules`.
53
+
54
+ Done when the upgraded prompt's `Done Criteria` are satisfied.
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: vibekit-init
3
- description: Initialize or repair Minimal Vibe Coding Kit in an existing project. Use for first prompt, backbone.yml setup, CLAUDE.md merge, AGENTS.md merge, Cursor rules setup, or Codex skill setup. Always show requirements and a diff before writing.
3
+ description: Initialize or repair Minimal Vibe Coding Kit in an existing project. Use for first prompt, backbone.yml setup, CLAUDE.md merge, AGENTS.md merge, Cursor rules setup, Codex skill setup, or Grok setup. Always show requirements and a diff before writing.
4
4
  disable-model-invocation: true
5
- argument-hint: target path; profiles claude,cursor,codex; write yes/no
5
+ argument-hint: target path; profiles claude,cursor,codex,grok; write yes/no
6
6
  ---
7
7
 
8
8
  # Vibe Kit Init
@@ -0,0 +1,77 @@
1
+ # Minimal Vibe Coding Kit guardrails for Codex.
2
+ # Codex rules are experimental. Project-local rules load only when the
3
+ # project .codex/ layer is trusted, and they govern commands that request
4
+ # execution outside the sandbox. Verify a rule with:
5
+ # codex execpolicy check --pretty --rules .codex/rules/vibekit.rules -- git push origin main
6
+
7
+ prefix_rule(
8
+ pattern = ["rm"],
9
+ decision = "forbidden",
10
+ justification = "Use `trash` instead of `rm` so deletions stay recoverable.",
11
+ match = ["rm -rf build", "rm notes.txt"],
12
+ not_match = ["trash notes.txt"],
13
+ )
14
+
15
+ prefix_rule(
16
+ pattern = ["git", "push"],
17
+ decision = "forbidden",
18
+ justification = "Pushing needs explicit user approval.",
19
+ match = ["git push", "git push --force origin main"],
20
+ not_match = ["git status"],
21
+ )
22
+
23
+ prefix_rule(
24
+ pattern = ["git", "reset", "--hard"],
25
+ decision = "forbidden",
26
+ justification = "Hard resets discard work; ask the user first.",
27
+ match = ["git reset --hard origin/main"],
28
+ not_match = ["git reset --soft HEAD~1"],
29
+ )
30
+
31
+ prefix_rule(
32
+ pattern = [["sh", "bash", "zsh"]],
33
+ decision = "forbidden",
34
+ justification = "Blocks `curl ... | sh` style remote installers; run vetted scripts by path instead.",
35
+ match = ["sh -c ls", "bash install.sh"],
36
+ not_match = ["shellcheck install.sh"],
37
+ )
38
+
39
+ prefix_rule(
40
+ pattern = ["npx", ["--yes", "-y"]],
41
+ decision = "forbidden",
42
+ justification = "Auto-confirmed npx executes arbitrary packages; drop the --yes/-y flag so the run is reviewed.",
43
+ match = ["npx --yes some-package", "npx -y some-package"],
44
+ not_match = ["npx vitest run"],
45
+ )
46
+
47
+ prefix_rule(
48
+ pattern = ["npm", "publish"],
49
+ decision = "forbidden",
50
+ justification = "Publishing needs explicit user approval.",
51
+ match = ["npm publish", "npm publish --access public"],
52
+ not_match = ["npm pack"],
53
+ )
54
+
55
+ prefix_rule(
56
+ pattern = ["migrate"],
57
+ decision = "forbidden",
58
+ justification = "Database migrations need explicit user approval.",
59
+ match = ["migrate up"],
60
+ not_match = ["npm run migrate"],
61
+ )
62
+
63
+ prefix_rule(
64
+ pattern = ["docker", "compose", "up"],
65
+ decision = "forbidden",
66
+ justification = "Starting service stacks needs explicit user approval.",
67
+ match = ["docker compose up -d"],
68
+ not_match = ["docker compose ps"],
69
+ )
70
+
71
+ prefix_rule(
72
+ pattern = ["docker-compose", "up"],
73
+ decision = "forbidden",
74
+ justification = "Starting service stacks needs explicit user approval.",
75
+ match = ["docker-compose up -d"],
76
+ not_match = ["docker-compose ps"],
77
+ )
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "minimal-vibe-coding-kit",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Reusable vibe coding skills and workflows for Codex-compatible repositories.",
5
5
  "author": {
6
6
  "name": "Minimal Vibe Coding Kit"
@@ -0,0 +1,18 @@
1
+ {
2
+ "permissions": {
3
+ "deny": [
4
+ "Shell(rm)",
5
+ "Shell(sh)",
6
+ "Shell(bash)",
7
+ "Shell(zsh)",
8
+ "Shell(git:push*)",
9
+ "Shell(git:reset --hard*)",
10
+ "Shell(npx:--yes*)",
11
+ "Shell(npx:-y*)",
12
+ "Shell(npm:publish*)",
13
+ "Shell(migrate)",
14
+ "Shell(docker:compose up*)",
15
+ "Shell(docker-compose:up*)"
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Safe-delete guardrail - prefer trash over rm so deletions stay recoverable.
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Safe delete rules
7
+
8
+ - Never delete permanently by default. Prefer `trash` over `rm`, `rm -rf`, `rmdir`, and `find -delete` so deletions stay recoverable.
9
+ - Before deleting, check availability with `command -v trash`. If available, use `trash <path>`.
10
+ - If `trash` is missing, recommend installing it instead of falling back to `rm`:
11
+ - macOS 14 or newer: built in at `/usr/bin/trash`, nothing to install.
12
+ - Older macOS: `brew install trash` (https://formulae.brew.sh/formula/trash).
13
+ - Linux: `sudo apt install trash-cli` or `pip install trash-cli` (https://github.com/andreafrancia/trash-cli).
14
+ - Any OS with Node.js: `npm install --global trash-cli` (https://github.com/sindresorhus/trash-cli).
15
+ - Permanent deletion requires the user's explicit approval of the exact paths, and the `path-sensitive-shell-safety` skill first when paths come from variables.
16
+ - Honor the deletion preference recorded in `backbone.yml` `conventions.custom_rules` during first-time init.
@@ -2,15 +2,22 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
3
  "permissions": {
4
4
  "deny": [
5
- "Bash(rm -rf *)",
5
+ "Bash(rm -rf:*)",
6
6
  "Bash(rm:*)",
7
- "Bash(git push *)",
8
- "Bash(git push --force*)",
9
- "Bash(git reset --hard*)",
10
- "Bash(curl *|*sh*)",
11
- "Bash(wget *|*sh*)",
12
- "Bash(npm publish*)",
13
- "Bash(npx * --yes*)",
7
+ "Bash(git push:*)",
8
+ "Bash(git push --force:*)",
9
+ "Bash(git reset --hard:*)",
10
+ "Bash(sh)",
11
+ "Bash(sh -)",
12
+ "Bash(bash)",
13
+ "Bash(bash -)",
14
+ "Bash(zsh)",
15
+ "Bash(zsh -)",
16
+ "Bash(npx --yes *)",
17
+ "Bash(npx -y *)",
18
+ "Bash(npx * --yes *)",
19
+ "Bash(npx * -y *)",
20
+ "Bash(npm publish:*)",
14
21
  "Bash(migrate *)",
15
22
  "Bash(docker compose up*)",
16
23
  "Bash(docker-compose up*)"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: coding-level
3
- description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked.
3
+ description: Set the coding-explanation register. /coding-level N (0=ELI5, 1=Junior, 2=Mid, 3=Senior, 4=Tech Lead, 5=God); active until reinvoked. A project default may be recorded in backbone.yml conventions.custom_rules.
4
4
  disable-model-invocation: true
5
5
  argument-hint: "[0-5]"
6
6
  ---
@@ -20,6 +20,13 @@ argument-hint: "[0-5]"
20
20
 
21
21
  1. Read `$ARGUMENTS` as N. If N is not an integer 0–5, reply with the table above and ask for a valid N.
22
22
  2. Read `references/level-<N>.md`, state once which level is now active, and apply that persona to every reply until `/coding-level` is invoked again.
23
+ 3. Ask once: "Save level N as the project default?" If yes, add or update the `Default coding level: N` entry in `backbone.yml` `conventions.custom_rules` (show the diff and wait for approval, per kit rules).
24
+
25
+ ## Project default
26
+
27
+ - First-time init records a default as a `backbone.yml` `conventions.custom_rules` entry: `Default coding level: N (<Register>)`.
28
+ - Sessions without an explicit `/coding-level` start from that default level.
29
+ - `/coding-level N` overrides the default for the current session only, unless the user saves it in step 3.
23
30
 
24
31
  ## Scope
25
32
 
@@ -48,6 +48,7 @@ No empty, unset, broad, symlinked, or unintended path may reach a destructive co
48
48
 
49
49
  ## Required outcomes
50
50
 
51
+ - Prefer a recoverable delete (`trash`) over permanent `rm` for user files; permanent deletion requires explicit confirmation of the exact paths. If `trash` is missing, recommend installing it (macOS 14+ built-in; older macOS `brew install trash`; Linux `sudo apt install trash-cli`; any OS with Node `npm i -g trash-cli`).
51
52
  - A blank branch may follow the documented default-branch fallback policy.
52
53
  - An explicit branch must fail if missing; never silently deploy another branch.
53
54
  - A blank folder/base value must fail before any `rm`, `mv`, `cp`, `rsync`, `find`, Docker, or Git cleanup command runs.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: prompt-sharpener
3
+ description: Sharpen a rough prompt into a precise one — same intent, sharper not longer — then execute the sharpened version immediately in the same turn.
4
+ argument-hint: "the rough prompt to sharpen and execute"
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # Prompt Sharpener
9
+
10
+ The text the user types after the invocation is the **raw prompt**. Upgrade it into a prompt that is **sharper, not longer** — keep the original intent, constraints, and language — then execute the upgraded version immediately in the same turn. No text after the invocation → ask the user what they want and stop.
11
+
12
+ ## Step 1 — Diagnose the raw prompt
13
+
14
+ Scan for every ailment below; each ailment found gets its cure applied directly in the upgraded prompt. Cure silently; call out a cure only when it could shift the user's intent.
15
+
16
+ - Vague verbs or adjectives ("help me", "make it nicer") → concrete, measurable operations and parameters.
17
+ - Two tasks in one prompt → split into an explicit execution order.
18
+ - No success criteria → add a binary pass/fail `Done when`.
19
+ - Emotional description ("everything is broken") → extract the specific technical symptom.
20
+ - "The whole app" scope → pin exact files/functions/directories; coding tasks always get a **scope lock** (edit only inside X, leave the rest untouched).
21
+ - Relies on memory of an old session → copy the decisions already settled in this conversation (stack, architecture, what was tried and failed) into the `Context` block.
22
+ - Invitation to fabricate ("what do experts say about X?") → anchor grounding: state only what can be verified; when unsure, say so explicitly.
23
+ - No output format → fix the structure and length; when the format is hard to describe in words, include 2-3 sample examples (including an edge case) in the `Output Contract`.
24
+
25
+ Done when: the raw prompt has been checked against the full list and no ailment is left without its cure in the upgraded prompt.
26
+
27
+ ## Step 2 — Build the upgraded prompt
28
+
29
+ Classify the task (coding / research / writing / analysis / planning / review), then assemble blocks in this order — add a block only when it raises precision; small tasks need just 2-3 blocks:
30
+
31
+ `Objective` → `Context` → `Work Style` → `Tool Rules` → `Output Contract` → `Verification` → `Done Criteria`
32
+
33
+ Focus per task type:
34
+
35
+ - Coding: scope lock, smallest correct change, validation after the edit — default to the `validate` command in `backbone.yml` when the repo has one.
36
+ - Research: source quality, citations, explicit uncertainty.
37
+ - Writing: audience, voice, length.
38
+ - Review: group findings by severity, name the failure mode.
39
+
40
+ Construction rules:
41
+
42
+ - Write constraints with the strongest signal words: MUST instead of "should", NEVER instead of "avoid".
43
+ - Missing information → state the assumption in `Context` and keep going; stop to ask only when the task is destructive or irreversible.
44
+ - Say _what_ to verify; let the model regulate its own depth of thought.
45
+ - Repo work MUST respect `backbone.yml` conventions and protected paths; when the upgraded task is a large decomposition or a risky decision, its `Work Style` block may direct Step 3 to open with the `sequential-thinking` or `clearthought` skill.
46
+ - Closing audit: reread every sentence; if cutting it would not change the output, cut it — every remaining word is **load-bearing**.
47
+
48
+ Done when the upgraded prompt scores on all 6 points: intent preserved — ambiguity reduced — right depth — clear output — has verification — has a stopping point.
49
+
50
+ ## Step 3 — Present and execute
51
+
52
+ Print the upgraded prompt in a single code block, with at most 2 sentences on the key changes. Then treat it as the user's official request: start executing immediately in the same turn, researching and editing according to its own `Tool Rules`.
53
+
54
+ Done when the upgraded prompt's `Done Criteria` are satisfied.
@@ -0,0 +1,13 @@
1
+ # Grok notes
2
+
3
+ Grok Build (the `grok` CLI) reads `AGENTS.md` from the repo root down to the working directory (Codex-style), plus every `*.md` rule in `.grok/rules/`, and repository skills from `.grok/skills/`. User-invocable skills also appear as slash commands, for example `/memento` or `/prompt-sharpener`.
4
+
5
+ Useful built-ins include `/plan`, `/skills`, `/plugins`, `/hooks`, `/mcps`, and `/model`; `grok inspect` lists the config sources, instructions, skills, plugins, hooks, and MCP servers discovered for the current directory, and `grok -p "<prompt>"` runs headless.
6
+
7
+ Guardrails ship in two layers. This repo's `.grok/config.toml` carries project-scoped `[permission]` deny rules for dangerous commands — project configs support MCP servers, plugins, and permission rules. User preferences such as `[ui] permission_mode` are user-scoped only and belong in `~/.grok/config.toml`; see `config.example.toml`. Project `.grok/hooks/` require `/hooks-trust` before they run.
8
+
9
+ Native custom reasoning skills:
10
+
11
+ - `clearthought`: structured reasoning for broad or ambiguous coding tasks.
12
+ - `sequential-thinking`: step-by-step task splitting with revisions and branches.
13
+ - `reviewing-4p-priorities`: P0-P4 review triage and fix ordering.
@@ -0,0 +1,13 @@
1
+ # Example user-level settings. Copy the relevant parts into ~/.grok/config.toml.
2
+ # Project-scoped guardrails already ship in this repo's .grok/config.toml
3
+ # ([permission] deny rules for dangerous commands); Grok merges both layers.
4
+
5
+ # Keep the default ask-before-run permission mode; do not enable always-approve.
6
+ # permission_mode is user-scoped and is ignored in project configs.
7
+ [ui]
8
+ permission_mode = "ask"
9
+
10
+ # One-off deny on the CLI: grok --deny 'Bash(rm -rf *)'
11
+ # Enterprise-managed policy belongs in /etc/grok/requirements.toml (fail-closed;
12
+ # it cannot be overridden by user or project config).
13
+ # References: https://docs.x.ai/build/settings and https://docs.x.ai/build/enterprise