Skip to content

Commit 940350d

Browse files
committed
feat(rules): add 5 anti-foot-shoot block rules (Tier 1)
Adds a new rule family - Anti foot-shoot (Tier 1) - covering the high-cost mistakes the team has already paid for. Each rule maps 1:1 to a feedback memory whose intent is "never do this", and ships a bypass marker for the rare cases where the action is intentional. The 5 new rules: | Rule | Action | Tool | Memory | |---|---|---|---| | block-playwright-headless | block | Bash | feedback_no_headless.md | | block-git-force-push-no-lease | block | Bash | feedback_resolve_merge_conflicts.md | | block-git-rebase-skip | block | Bash | feedback_resolve_merge_conflicts.md | | block-standup-not-in-escritorio | block | Edit/Write/MultiEdit | feedback_standup_desktop.md | | block-goodnight-not-in-escritorio | block | Edit/Write/MultiEdit | feedback_goodnight_desktop.md | Coverage notes: - block-playwright-headless: matches `playwright test` (npx, pnpm, yarn, bare) and requires --headed / --ui / --debug on the same line. - block-git-force-push-no-lease: positive match on `-f` or `--force` plus defense-in-depth negative match on `--force-with-lease` for pathological orderings like `git push -f --force-with-lease`. - block-git-rebase-skip: matches `git rebase --skip` exactly; --continue and --abort are unaffected. - block-{standup,goodnight}-not-in-escritorio: pattern + not_pattern on the same file_path field. Both `~/Escritorio` (Spanish locale) and `~/Desktop` (English / aliasing) are accepted. Tests: 99 -> 128 passing (+29 new). Each rule covers positive matches, negative matches, and bypass behavior. Version bump: 1.8.0 -> 1.9.0 in package.json, plugin.json, and marketplace.json (top-level + nested plugin entry).
1 parent 1886a3b commit 940350d

9 files changed

Lines changed: 829 additions & 4 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
33
"name": "make-no-mistakes",
4-
"version": "1.8.0",
4+
"version": "1.9.0",
55
"description": "The disciplined dev lifecycle — implement issues, review PRs, sync releases, test E2E, manage sessions, and stash secrets via OS-native prompts. One plugin to make no mistakes.",
66
"owner": {
77
"name": "Luis Andres Pena Castillo",
@@ -11,7 +11,7 @@
1111
{
1212
"name": "make-no-mistakes",
1313
"description": "Dev lifecycle orchestrator: disciplined Linear issue execution with worktree isolation, PR review with Greptile gating, team release sync, E2E test generation and execution, test suite previewer, security pentesting, MoSCoW + RICE prioritization, cross-platform secret stash via OS-native GUI prompts (zenity / kdialog / osascript / Get-Credential), and session management. 18 commands, 6 auto-activating skills, 2 specialized agents.",
14-
"version": "1.8.0",
14+
"version": "1.9.0",
1515
"author": {
1616
"name": "Luis Andres Pena Castillo",
1717
"email": "lapc506@users.noreply.github.com"

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "make-no-mistakes",
3-
"version": "1.8.0",
3+
"version": "1.9.0",
44
"description": "The disciplined dev lifecycle — implement issues, review PRs, sync releases, test E2E, manage sessions, stash secrets, and enforce manifest-driven tool-call hooks. One plugin to make no mistakes.",
55
"author": {
66
"name": "Luis Andres Pena Castillo",

hooks/rules/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,21 @@ Adding a new family is fine — just keep ids unique and follow the schema.
161161
migrations directory when migrations failed to auto-run after a
162162
teammate's PR merged.
163163

164+
- **Anti foot-shoot (Tier 1)** (`block-playwright-headless`,
165+
`block-git-force-push-no-lease`, `block-git-rebase-skip`,
166+
`block-standup-not-in-escritorio`, `block-goodnight-not-in-escritorio`)
167+
— hard stops on the high-cost mistakes that already burned the team:
168+
headless E2E runs (a Playwright invocation without `--headed` /
169+
`--ui` / `--debug` is blocked per `feedback_no_headless.md`), bare
170+
`git push --force` / `-f` without `--force-with-lease` (silent
171+
collaborator-push overwrites, per `feedback_resolve_merge_conflicts.md`),
172+
`git rebase --skip` (silent commit drop, same memory),
173+
and writes of `daily-standup*.md` / `next-day-*.md` / `goodnight-*.md`
174+
outside `~/Escritorio` (per the desktop-handoff memories
175+
`feedback_standup_desktop.md` and `feedback_goodnight_desktop.md`).
176+
Each rule ships a kebab-case bypass marker for the rare cases where
177+
the action is intentional and documented.
178+
164179
## Tier 2 — decomposing non-deterministic memories
165180

166181
Many narrative-style guidelines can be converted to deterministic rules

0 commit comments

Comments
 (0)