@simpleapps-com/augur-skills 2026.4.9 → 2026.4.10

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.
@@ -24,9 +24,9 @@ All projects live under `~/projects/` in two groups:
24
24
 
25
25
  - Internal repos go in `~/projects/simpleapps/`
26
26
  - Client site repos go in `~/projects/clients/`
27
- - Workspace files go in `~/projects/workspaces/` one `.code-workspace` per project
27
+ - Workspace files go in `~/projects/workspaces/`, one `.code-workspace` per project
28
28
 
29
- macOS APFS is case-insensitive by default. `~/Projects/` and `~/projects/` resolve to the same directory. Do NOT flag path casing differences as errors only flag paths that genuinely do not resolve.
29
+ macOS APFS is case-insensitive by default. `~/Projects/` and `~/projects/` resolve to the same directory. Do NOT flag path casing differences as errors. Only flag paths that genuinely do not resolve.
30
30
 
31
31
  ## Project Directory Layout
32
32
 
@@ -44,7 +44,7 @@ Every project MUST use this layout:
44
44
  └── .simpleapps/ # Config, credentials, site profile (not in git)
45
45
  ```
46
46
 
47
- The parent `{project}/` is NOT a git repo it keeps code and wiki side-by-side. The git repo is always at `repo/`. Use `git -C repo` for git operations from the project root.
47
+ The parent `{project}/` is NOT a git repo. It keeps code and wiki side-by-side. The git repo is always at `repo/`. Use `git -C repo` for git operations from the project root.
48
48
 
49
49
  | Content | Location | Examples |
50
50
  |---------|----------|---------|
@@ -53,16 +53,16 @@ The parent `{project}/` is NOT a git repo — it keeps code and wiki side-by-sid
53
53
  | Repo `.claude/rules/` | `repo/` | Minimal summaries referencing wiki |
54
54
  | Repo `.claude/CLAUDE.md` | `repo/` | Quick reference + wiki links |
55
55
  | Active task context | `wip/` | `{issue-number}-{short-desc}.md` files |
56
- | Temporary files | `tmp/` | Scratch space commit msgs, PR bodies, intermediate output. Full access. |
56
+ | Temporary files | `tmp/` | Scratch space: commit msgs, PR bodies, intermediate output. Full access. |
57
57
  | SimpleApps config | `.simpleapps/` | Settings, site profile, credentials (see below) |
58
58
 
59
59
  **WIP**: Research, plans, decisions, test results. MUST NOT contain secrets, final docs, or code.
60
60
 
61
- **tmp/**: Fully available for scratch work commit messages, PR bodies, issue comments, intermediate output, and any throwaway files. Read, write, and delete freely without asking. Create the folder if missing. Clean up files after use.
61
+ **tmp/**: Fully available for scratch work: commit messages, PR bodies, issue comments, intermediate output, and any throwaway files. Read, write, and delete freely without asking. Create the folder if missing. Clean up files after use.
62
62
 
63
63
  ## Plugin Rules
64
64
 
65
- The plugin ships rule templates in `plugins/simpleapps/rules/` that MUST exist in every project's `repo/.claude/rules/`. Rules are always loaded into context they enforce baseline guardrails (like git safety) without depending on a skill being invoked. The `/project-init` command copies missing rules from the plugin into the project.
65
+ The plugin ships rule templates in `plugins/simpleapps/rules/` that MUST exist in every project's `repo/.claude/rules/`. Rules are always loaded into context. They enforce baseline guardrails (like git safety) without depending on a skill being invoked. The `/project-init` command copies missing rules from the plugin into the project.
66
66
 
67
67
  ## .simpleapps/ Configuration
68
68
 
@@ -86,7 +86,7 @@ Two scopes, project overrides user:
86
86
  | File | Scope | Purpose | Read by |
87
87
  |------|-------|---------|---------|
88
88
  | `settings.json` | Global + project | Infrastructure config | All skills via project-defaults |
89
- | `site.json` | Project only | Site profile defaults, search terms, PII, auth | Skills needing site context |
89
+ | `site.json` | Project only | Site profile: defaults, search terms, PII, auth | Skills needing site context |
90
90
  | `basecamp.json` | Global + project | Basecamp MCP credentials | Basecamp MCP server |
91
91
  | `augur-api.json` | Global + project | Augur API MCP credentials | Augur API MCP server |
92
92
 
@@ -98,11 +98,11 @@ Two scopes, project overrides user:
98
98
  }
99
99
  ```
100
100
 
101
- Resolution: read `{project}/.simpleapps/settings.json` first, fall back to `~/.simpleapps/settings.json`, fall back to defaults. Field-level override project wins for any field it defines.
101
+ Resolution: read `{project}/.simpleapps/settings.json` first, fall back to `~/.simpleapps/settings.json`, fall back to defaults. Field-level override: project wins for any field it defines.
102
102
 
103
103
  ### site.json
104
104
 
105
- One per client project. Consistent structure across all sites same fields, different values. Replaces the old `{siteId}.json` pattern.
105
+ One per client project. Consistent structure across all sites: same fields, different values. Replaces the old `{siteId}.json` pattern.
106
106
 
107
107
  ```json
108
108
  {
@@ -115,9 +115,9 @@ One per client project. Consistent structure across all sites — same fields, d
115
115
 
116
116
  ### Rules
117
117
 
118
- - MUST NOT commit `.simpleapps/` to git contains PII and credentials
119
- - MUST NOT save site data to wiki or memory PII
120
- - MUST NOT create `{siteId}.json` files use `site.json` instead
118
+ - MUST NOT commit `.simpleapps/` to git. Contains PII and credentials.
119
+ - MUST NOT save site data to wiki or memory (PII)
120
+ - MUST NOT create `{siteId}.json` files. Use `site.json` instead.
121
121
  - If old `{siteId}.json` files exist, `/project-init` will flag them for migration to `site.json`
122
122
 
123
123
  ## Symlink Setup
@@ -180,17 +180,17 @@ Every project SHOULD configure `.claude/settings.local.json` with these deny rul
180
180
 
181
181
  Why each is denied:
182
182
 
183
- - **`awk`** Use the Edit tool instead.
184
- - **`cat`** Use the Read tool instead.
185
- - **`cd`** MUST NOT use in any Bash command, including compound commands (`cd /path && git`). Use `git -C repo` for git, path arguments for everything else. Compound cd+git commands trigger an unblockable Claude Code security prompt that interrupts the user even when `cd` is denied.
186
- - **`find`** Use the Glob tool instead.
187
- - **`for`** Shell loops are unnecessary; use dedicated tools or make multiple tool calls instead.
188
- - **`grep`** Use the Grep tool instead.
189
- - **`head`/`tail`** Use the Read tool with `offset` and `limit` parameters instead.
190
- - **`kill`/`pkill`** Use `TaskStop` to manage background processes. `TaskStop` cleanly shuts down the task and updates Claude Code's internal tracking.
191
- - **`rg`** Use the Grep tool instead (it uses ripgrep internally).
192
- - **`sed`** Use the Edit tool instead.
193
- - **`sleep`** Unnecessary; use proper sequencing or background tasks.
183
+ - **`awk`**: Use the Edit tool instead.
184
+ - **`cat`**: Use the Read tool instead.
185
+ - **`cd`**: MUST NOT use in any Bash command, including compound commands (`cd /path && git`). Use `git -C repo` for git, path arguments for everything else. Compound cd+git commands trigger an unblockable Claude Code security prompt that interrupts the user even when `cd` is denied.
186
+ - **`find`**: Use the Glob tool instead.
187
+ - **`for`**: Shell loops are unnecessary; use dedicated tools or make multiple tool calls instead.
188
+ - **`grep`**: Use the Grep tool instead.
189
+ - **`head`/`tail`**: Use the Read tool with `offset` and `limit` parameters instead.
190
+ - **`kill`/`pkill`**: Use `TaskStop` to manage background processes. `TaskStop` cleanly shuts down the task and updates Claude Code's internal tracking.
191
+ - **`rg`**: Use the Grep tool instead (it uses ripgrep internally).
192
+ - **`sed`**: Use the Edit tool instead.
193
+ - **`sleep`**: Unnecessary; use proper sequencing or background tasks.
194
194
 
195
195
  ## Bin Scripts (PATH)
196
196
 
@@ -17,8 +17,8 @@ These tools keep codebases healthy. When working in a project, check whether the
17
17
  | **Prettier** | Consistent formatting | `.prettierrc*`, `prettier.config.*` | `pnpm format` |
18
18
  | **TypeScript** | Type safety | `tsconfig.json` | `pnpm typecheck` |
19
19
  | **Vitest** / **Jest** | Tests | `vitest.config.*`, `jest.config.*` | `pnpm test` |
20
- | **knip** | Dead code unused exports, deps, and files | `knip.json`, `knip.ts` | `pnpm knip` |
21
- | **Lefthook** | Pre-commit hooks run checks before push | `lefthook.yml` | auto on commit |
20
+ | **knip** | Dead code: unused exports, deps, and files | `knip.json`, `knip.ts` | `pnpm knip` |
21
+ | **Lefthook** | Pre-commit hooks: run checks before push | `lefthook.yml` | auto on commit |
22
22
 
23
23
  Also check `repo/package.json` for scripts containing: `lint`, `format`, `typecheck`, `test`, `check`, `validate`.
24
24
 
@@ -38,32 +38,32 @@ If any are missing, flag them:
38
38
 
39
39
  ```
40
40
  Missing quality tooling:
41
- - [ ] Linting suggest: eslint / ruff / phpstan
42
- - [ ] Formatting suggest: prettier / black / php-cs-fixer
43
- - [ ] Testing suggest: vitest / pytest / phpunit
44
- - [ ] Dead code detection suggest: knip
45
- - [ ] Pre-commit hooks suggest: lefthook
41
+ - [ ] Linting: suggest eslint / ruff / phpstan
42
+ - [ ] Formatting: suggest prettier / black / php-cs-fixer
43
+ - [ ] Testing: suggest vitest / pytest / phpunit
44
+ - [ ] Dead code detection: suggest knip
45
+ - [ ] Pre-commit hooks: suggest lefthook
46
46
  ```
47
47
 
48
- Do not install or configure tools without the user's approval. Flag what's missing and explain why it helps let the user decide.
48
+ Do not install or configure tools without the user's approval. Flag what's missing and explain why it helps. Let the user decide.
49
49
 
50
50
  ## When to suggest
51
51
 
52
- - **Setting up a new project** suggest the full set
53
- - **Reviewing code with unused imports/exports** suggest knip
54
- - **Seeing inconsistent formatting** suggest prettier
55
- - **No tests for changed code** suggest vitest
56
- - **No pre-commit hooks** suggest lefthook
52
+ - **Setting up a new project**: suggest the full set
53
+ - **Reviewing code with unused imports/exports**: suggest knip
54
+ - **Seeing inconsistent formatting**: suggest prettier
55
+ - **No tests for changed code**: suggest vitest
56
+ - **No pre-commit hooks**: suggest lefthook
57
57
 
58
58
  ## Fix everything, hide nothing
59
59
 
60
- See work-habits: "Leave it better than you found it" and "Resolve, never hide." Both apply fully to quality checks. Fix every issue regardless of who introduced it. NEVER suppress checks fix the code.
60
+ See work-habits: "Leave it better than you found it" and "Resolve, never hide." Both apply fully to quality checks. Fix every issue regardless of who introduced it. NEVER suppress checks. Fix the code.
61
61
 
62
62
  When reviewing code, scan for existing suppressions (`eslint-disable`, `@ts-ignore`, `.skip`, `noqa`, `phpcs:ignore`, etc.) and flag every instance to the user. These are hidden technical debt.
63
63
 
64
64
  ## pnpm lockfile sync
65
65
 
66
- In pnpm workspace projects, the root `pnpm-lock.yaml` and site-level lockfiles MUST stay in sync. CI uses `--frozen-lockfile` and will reject mismatched lockfiles this is the most common cause of deploy failures.
66
+ In pnpm workspace projects, the root `pnpm-lock.yaml` and site-level lockfiles MUST stay in sync. CI uses `--frozen-lockfile` and will reject mismatched lockfiles. This is the most common cause of deploy failures.
67
67
 
68
68
  After ANY `pnpm install`, `pnpm update`, or `pnpm add` in a workspace, run `pnpm install` at the repo root to regenerate the root lockfile. Commit both lockfiles together. If you forget, the next deploy will fail.
69
69
 
@@ -14,15 +14,27 @@ allowed-tools:
14
14
 
15
15
  The wiki is the **single source of truth** for how a project works. The wiki is the spec; the repo is the implementation.
16
16
 
17
+ ## Why This Design
18
+
19
+ The wiki is a **git-backed markdown folder** (`wiki/`) living next to the code repo (`repo/`), read by agents as local files via `Read wiki/*.md`. Every design choice answers a specific failure mode:
20
+
21
+ - **Markdown in git**: the docs live where the work lives and version alongside the code. Diffs show what changed and why. No login, no API, no stale snapshot.
22
+ - **Separate `wiki/` repo, not embedded in the code repo**: the wiki ships independently of code releases. Doc fixes do not wait on code review cycles, and code commits stay clean of doc noise.
23
+ - **Local file reads, not network fetches**: the agent loads the full wiki at session start with zero latency. No rate limits, no auth, works offline.
24
+ - **20K token budget**: small enough to fit the whole wiki in context while leaving 90% for working memory. Forces ruthless editing; a 200K-token wiki that cannot be loaded helps no one.
25
+ - **Process and principles, not code snippets**: code in the wiki rots the day it is pasted. Link to the source file instead, so the wiki stays true as the code evolves.
26
+
27
+ The payoff: **the agent and the user share the same model of the project.** Less re-explaining, fewer guesses, fewer "I assumed..." mistakes. Work goes faster because the agent already knows the conventions, and safer because the agent is not improvising decisions the wiki already settled.
28
+
17
29
  ## Token Budget
18
30
 
19
- A wiki MUST NOT exceed **20K tokens** (~15K words, ~60KB). This is 10% of the AI agent's 200K context window enough for the agent to load the entire wiki at session start while leaving 90% for working context.
31
+ A wiki MUST NOT exceed **20K tokens** (~15K words, ~60KB). This is 10% of the AI agent's 200K context window, enough for the agent to load the entire wiki at session start while leaving 90% for working context.
20
32
 
21
33
  Check size: `wc -w wiki/*.md` (multiply by ~1.3 for token estimate)
22
34
 
23
35
  ## Core Principle
24
36
 
25
- Repo files (`.claude/CLAUDE.md`, `.claude/rules/`, `README.md`) MUST be minimal orient then point to wiki. CLAUDE.md MUST link to every wiki content page these links cost ~15 tokens total but make every page one Read away from always-loaded context. AI agents read wiki pages as local files via `Read wiki/<page>.md`. No network requests needed.
37
+ Repo files (`.claude/CLAUDE.md`, `.claude/rules/`, `README.md`) MUST be minimal: orient then point to wiki. CLAUDE.md MUST link to every wiki content page. These links cost ~15 tokens total but make every page one Read away from always-loaded context. AI agents read wiki pages as local files via `Read wiki/<page>.md`. No network requests needed.
26
38
 
27
39
  ```
28
40
  Wiki defines → Code implements → Learnings update wiki → Repeat
@@ -34,7 +46,7 @@ When code reveals the wiki is wrong or incomplete, update immediately. The wiki
34
46
 
35
47
  Wikis are not just for the current project. They build institutional knowledge across the organization:
36
48
 
37
- - **Site → Site**: Other projects using the same tools learn from this wiki. Document what worked, what didn't, and why future sites benefit from your experience.
49
+ - **Site → Site**: Other projects using the same tools learn from this wiki. Document what worked, what didn't, and why. Future sites benefit from your experience.
38
50
  - **Site → Packages**: The packages team reads site wikis to understand real usage patterns, pain points, and gaps. Your wiki helps them build better shared tools.
39
51
  - **Packages → Site**: Package docs and conventions flow back into site wikis as shared patterns.
40
52
 
@@ -44,15 +56,15 @@ Write as if someone on a different project will read this wiki to understand how
44
56
 
45
57
  Every page serves junior devs (explanations, examples), senior devs (quick reference, decisions), and AI agents (unambiguous specs, MUST/SHOULD/MAY). Write for all three:
46
58
 
47
- - Lead with a summary seniors and agents get it fast, juniors get orientation
59
+ - Lead with a summary so seniors and agents get it fast and juniors get orientation
48
60
  - Explain *why* before *how*
49
61
  - Use tables for reference, code blocks for copy-paste, RFC 2119 keywords for requirements
50
62
  - Each page SHOULD be self-contained
51
- - Follow `simpleapps:writing-style` token-efficient, action verbs first, no filler
63
+ - Follow `simpleapps:writing-style` for token-efficient prose, action verbs first, no filler
52
64
 
53
65
  ## Content Rules
54
66
 
55
- - The wiki documents **process and principles**, not code. Minimize code examples describe the pattern, then link to a real file in the repo that demonstrates it. A link to working code is always better than a pasted snippet that can go stale.
67
+ - The wiki documents **process and principles**, not code. Minimize code examples. Describe the pattern, then link to a real file in the repo that demonstrates it. A link to working code is always better than a pasted snippet that can go stale.
56
68
  - If a code block is necessary (e.g., a command to run), keep it to 1-3 lines max.
57
69
  - The wiki documents *what* and *why*. The repo is the source of truth for *how*.
58
70
 
@@ -63,19 +75,53 @@ Every page serves junior devs (explanations, examples), senior devs (quick refer
63
75
  - Links: `[[Page-Name]]` or `[[Display Text|Page-Name]]`
64
76
  - Anchor links MUST target specific sections (`[[Versioning#version-bump-procedure]]`), not just pages
65
77
  - Repo references: use relative paths (`../../../wiki/Versioning.md`)
66
- - Default branch: `master` (not `main`)
78
+ - Wiki repo default branch: `master` (GitHub's `.wiki.git` convention; applies to the `wiki/` repo only, not the code repo). Code repos may use `main` or `master`. Check with `git -C repo branch --show-current`.
67
79
 
68
80
  ## Cross-Linking
69
81
 
70
- Cross-linking is the most important structural feature of a wiki. Without it, a wiki is just a collection of files. With it, a wiki becomes a **knowledge graph** each link is an attention signal that tells readers (human and AI) "this concept connects to that one."
82
+ Cross-linking is the most important structural feature of a wiki. Without it, a wiki is just a collection of files. With it, a wiki becomes a **knowledge graph** where each link is an attention signal that tells readers (human and AI) "this concept connects to that one."
83
+
84
+ Pages MUST link to related sections on other pages using `[[Page-Name#section]]`. Link to specific sections, not just pages. Every concept that is explained in more detail elsewhere MUST have a cross-link.
85
+
86
+ Cross-linking also eliminates duplication. If two pages explain the same concept, one MUST become the source of truth and the other MUST link to it. Never duplicate content across pages; link instead. This keeps the wiki lean and ensures updates happen in one place.
87
+
88
+ ### Link strategy: contextual, not link-farm
89
+
90
+ A link is only as useful as the words around it. The same rule serves both audiences:
91
+
92
+ - **Humans** scan anchor text and surrounding prose to decide whether to click. This is basic SEO; descriptive anchors win.
93
+ - **LLMs** weight links via the attention mechanism, which uses the surrounding tokens to decide what the link is about. A bare title in a "Related" list has no context to anchor against.
94
+
95
+ A link farm starves both readers. Humans see undifferentiated blue text; the LLM sees a list of titles with no relevance signal.
96
+
97
+ **MUST: place links inline, in the prose, at the moment the concept is mentioned.** That sentence is the link's context for both readers.
98
+
99
+ ```
100
+ ✅ Versioning follows [[Versioning#calver|CalVer (YYYY.MM.seq)]]. See the
101
+ procedure for [[Versioning#version-bump-procedure|bumping all version files together]].
102
+
103
+ ❌ ## Related
104
+ - [[Versioning]]
105
+ - [[Deployment]]
106
+ - [[Architecture]]
107
+ ```
71
108
 
72
- Pages MUST link to related sections on other pages using `[[Page-Name#section]]`. Link to specific sections, not just pages. Every concept that is explained in more detail elsewhere MUST have a cross-link. When writing or reviewing a page, actively look for opportunities to connect it to related pages the denser the link graph, the faster a reader builds understanding.
109
+ **MUST: anchor text describes what the link is about**, not "click here" or "see also" or the bare page title with no context. The reader (human or AI) should understand the destination from the anchor text alone.
73
110
 
74
- Cross-linking also eliminates duplication. If two pages explain the same concept, one MUST become the source of truth and the other MUST link to it. Never duplicate content across pages — link instead. This keeps the wiki lean and ensures updates happen in one place.
111
+ ```
112
+ ✅ [[Skill-Format#required-frontmatter|the required SKILL.md frontmatter fields]]
113
+ ❌ [[Skill-Format|click here]]
114
+ ❌ [[Skill-Format]] ← acceptable if the surrounding sentence supplies the context;
115
+ avoid as the only signal.
116
+ ```
117
+
118
+ **SHOULD NOT: create "Related", "See also", or "Further reading" sections as link dumps.** If a connection matters, work it into the prose where it matters. The exception is genuine navigation pages (`Home.md`, `_Sidebar.md`, `llms.txt`); those exist to be link indexes.
119
+
120
+ When auditing a page, count the trailing-list links vs. inline links. If trailing-list links outnumber inline links, the page is a directory entry, not a knowledge page. Rewrite to put the connections where the reader needs them.
75
121
 
76
122
  ## Wiki Over Memory
77
123
 
78
- When asked to save, document, or record knowledge use the wiki, MUST NOT use memory. The wiki is shared across all agents, all projects, and all computers. Memory is personal to one user on one machine invisible to everyone else.
124
+ When asked to save, document, or record knowledge, use the wiki. MUST NOT use memory. The wiki is shared across all agents, all projects, and all computers. Memory is personal to one user on one machine and invisible to everyone else.
79
125
 
80
126
  | Knowledge type | Where it belongs |
81
127
  |---------------|-----------------|
@@ -87,9 +133,27 @@ When asked to save, document, or record knowledge — use the wiki, MUST NOT use
87
133
  | Personal preferences (writing style, response length) | Memory |
88
134
  | User role and background | Memory |
89
135
 
90
- If the user corrects your behavior, update the relevant **skill** not memory. A correction saved to memory only helps one agent on one machine. A correction in a skill helps every agent on every project.
136
+ If the user corrects your behavior, update the relevant **skill**, not memory. A correction saved to memory only helps one agent on one machine. A correction in a skill helps every agent on every project.
137
+
138
+ If in doubt, it belongs in the wiki or a skill. The cost of putting shared knowledge in memory is that it dies with the session; no other agent, project, or computer will ever see it.
139
+
140
+ ### Versioned sources win over memory
141
+
142
+ When a recalled memory conflicts with the wiki, a rule, CLAUDE.md, or a skill, you MUST follow the versioned source and ignore the memory. Memory is:
143
+
144
+ - **Personal**: lives on one machine, invisible to other agents and teammates
145
+ - **Unauditable**: the user cannot easily review or version-control what an agent has saved
146
+ - **Often wrong**: agents save memories from misunderstandings, outdated context, or half-formed rules
147
+
148
+ Anything checked into git (wiki pages, `.claude/rules/*.md`, `CLAUDE.md`, skills) is the contract. Memory is at most a personal hint. YOU MUST NOT use memory to downgrade, override, or work around a MUST from a versioned source. If memory says X but the wiki says MUST NOT X, the wiki wins, every time.
149
+
150
+ When you detect a conflict:
151
+
152
+ 1. Follow the versioned source
153
+ 2. Remove or rewrite the offending memory file (update `MEMORY.md` index too)
154
+ 3. Report the conflict to the user so they know memory was incorrect
91
155
 
92
- If in doubt, it belongs in the wiki or a skill. The cost of putting shared knowledge in memory is that it dies with the session no other agent, project, or computer will ever see it.
156
+ "The memory told me otherwise" is never a valid reason to deviate from the wiki, a rule, or a skill. If you catch yourself reaching for that reasoning, stop. The memory is the problem, not the directive.
93
157
 
94
158
  ## Cross-Project Wiki Access
95
159
 
@@ -98,16 +162,16 @@ All projects follow the same directory layout (see `simpleapps:project-defaults`
98
162
  **Before reading another project's wiki, pull the latest:**
99
163
  `git -C {path-to-project}/wiki pull`
100
164
 
101
- **MUST use dedicated tools for cross-project access MUST NOT use shell commands:**
165
+ **MUST use dedicated tools for cross-project access. MUST NOT use shell commands:**
102
166
  - Read files: `Read("{path-to-project}/wiki/Page.md")`
103
167
  - Search code: `Grep(pattern: "...", path: "{path-to-project}/repo")`
104
168
  - Find files: `Glob(pattern: "{path-to-project}/repo/**/*.ts")`
105
169
 
106
- MUST NOT use `find`, `grep`, `cat`, `ls`, or any shell command to explore other projects. The paths are known use the dedicated tools directly.
170
+ MUST NOT use `find`, `grep`, `cat`, `ls`, or any shell command to explore other projects. The paths are known; use the dedicated tools directly.
107
171
 
108
172
  ### Search all wikis
109
173
 
110
- Every wiki on the machine is a local knowledge base. When looking for how something was solved, search across ALL wikis not just the current project:
174
+ Every wiki on the machine is a local knowledge base. When looking for how something was solved, search across ALL wikis, not just the current project:
111
175
 
112
176
  1. Read `~/.simpleapps/settings.json` to get `projectRoot`
113
177
  2. Pull the latest for all wikis before searching:
@@ -120,19 +184,19 @@ Every wiki on the machine is a local knowledge base. When looking for how someth
120
184
 
121
185
  Use Glob to discover which projects have wikis: `Glob(pattern: "{projectRoot}/clients/*/wiki")` and `Glob(pattern: "{projectRoot}/simpleapps/*/wiki")`.
122
186
 
123
- The wikis are kept fresh by `/curate-wiki` runs across projects. Searching locally is instant and requires no internet access the knowledge is already on the machine.
187
+ The wikis are kept fresh by `/curate-wiki` runs across projects. Searching locally is instant and requires no internet access; the knowledge is already on the machine.
124
188
 
125
- **What to search for:** testing patterns and checklists, architecture decisions, coding conventions, deployment procedures, and how specific features were implemented. Other sites have already solved many of the same problems search before building from scratch.
189
+ **What to search for:** testing patterns and checklists, architecture decisions, coding conventions, deployment procedures, and how specific features were implemented. Other sites have already solved many of the same problems; search before building from scratch.
126
190
 
127
191
  ## Deployment Page
128
192
 
129
- Every project wiki MUST have a `Deployment.md` page with up to three sections: Submit, Deploy, and Publish. This page defines the project-specific steps that `/submit`, `/deploy`, and `/publish` commands execute. Run `/curate-wiki` to generate it from the codebase the command scans CI workflows, package.json, deploy scripts, and asks the user about anything it cannot determine. See the `deployment` skill for the expected format.
193
+ Every project wiki MUST have a `Deployment.md` page with up to three sections: Submit, Deploy, and Publish. This page defines the project-specific steps that `/submit`, `/deploy`, and `/publish` commands execute. Run `/curate-wiki` to generate it from the codebase. The command scans CI workflows, package.json, deploy scripts, and asks the user about anything it cannot determine. See the `deployment` skill for the expected format.
130
194
 
131
195
  ## Testing Page
132
196
 
133
- Every project wiki MUST have a `Testing.md` page. This is the E2E verification checklist that `/verify` uses to walk through the site in Chrome. The page grows over time `/curate-wiki` MUST add testing knowledge learned during the session (new edge cases, failure patterns, test data) to the Testing page.
197
+ Every project wiki MUST have a `Testing.md` page. This is the E2E verification checklist that `/verify` uses to walk through the site in Chrome. The page grows over time. `/curate-wiki` MUST add testing knowledge learned during the session (new edge cases, failure patterns, test data) to the Testing page.
134
198
 
135
- A good Testing page covers: test tiers (automated vs manual), test data (items, accounts, cards), and an E2E checklist organized by page area (homepage, listing, detail, cart, checkout, etc.). Each checklist item is a concrete, verifiable condition not vague ("works") but specific ("price shows $9.26").
199
+ A good Testing page covers: test tiers (automated vs manual), test data (items, accounts, cards), and an E2E checklist organized by page area (homepage, listing, detail, cart, checkout, etc.). Each checklist item is a concrete, verifiable condition, not vague ("works") but specific ("price shows $9.26").
136
200
 
137
201
  ## Keep It Lean
138
202
 
@@ -143,7 +207,7 @@ A good Testing page covers: test tiers (automated vs manual), test data (items,
143
207
 
144
208
  ## Maintenance
145
209
 
146
- Cross-check wiki against code before updating. Staleness-prone: versions, file counts, CI workflows, TODO markers, API surfaces. **Never echo what the wiki says read the code, then write.**
210
+ Cross-check wiki against code before updating. Staleness-prone: versions, file counts, CI workflows, TODO markers, API surfaces. **Never echo what the wiki says. Read the code, then write.**
147
211
 
148
212
  When adding/removing pages, MUST update: `Home.md`, `_Sidebar.md`, `llms.txt` (if present).
149
213
 
@@ -11,7 +11,7 @@ Do not add features, refactor surrounding code, or "improve" beyond the request.
11
11
 
12
12
  ## Use the right tool
13
13
 
14
- Prefer dedicated tools over Bash equivalents they are faster, need no permissions, and produce cleaner output:
14
+ Prefer dedicated tools over Bash equivalents. They are faster, need no permissions, and produce cleaner output:
15
15
  - Read not `cat`/`head`/`tail`
16
16
  - Grep not `grep`/`rg`
17
17
  - Glob not `find`/`ls`
@@ -19,11 +19,11 @@ Prefer dedicated tools over Bash equivalents — they are faster, need no permis
19
19
 
20
20
  Reserve Bash for commands that have no dedicated tool equivalent.
21
21
 
22
- MUST NOT use `cd` in any Bash command not even in compound commands like `cd /path && git log`. Use `git -C repo` for git, and path arguments for everything else. The `cd` deny rule does not suppress Claude Code's built-in security prompt for compound cd+git commands, so any `cd` usage will interrupt the user.
22
+ MUST NOT use `cd` in any Bash command, not even in compound commands like `cd /path && git log`. Use `git -C repo` for git, and path arguments for everything else. The `cd` deny rule does not suppress Claude Code's built-in security prompt for compound cd+git commands, so any `cd` usage will interrupt the user.
23
23
 
24
24
  ## Check site.json first
25
25
 
26
- Before asking the user for credentials, tokens, siteId, domain, or any site-specific configuration, read `.simpleapps/site.json`. It is the single source of truth for site-level data credentials, auth tokens, defaults, and identifiers. If what you need is not there, ask the user to add it to `site.json` rather than providing it in chat (chat data is ephemeral; `site.json` persists across sessions).
26
+ Before asking the user for credentials, tokens, siteId, domain, or any site-specific configuration, read `.simpleapps/site.json`. It is the single source of truth for site-level data: credentials, auth tokens, defaults, and identifiers. If what you need is not there, ask the user to add it to `site.json` rather than providing it in chat (chat data is ephemeral; `site.json` persists across sessions).
27
27
 
28
28
  ## Read the error first
29
29
 
@@ -42,15 +42,25 @@ Code that compiles is not code that works. After making changes, verify they act
42
42
 
43
43
  1. Run tests (`pnpm test` or equivalent)
44
44
  2. If the project has a Testing page in the wiki, suggest `/verify` to walk through the E2E checklist in the browser
45
- 3. If you changed UI, check it visually load the page in Chrome and confirm it looks right
45
+ 3. If you changed UI, check it visually. Load the page in Chrome and confirm it looks right.
46
46
 
47
- YOU MUST NOT mark work complete without verification. Suggesting `/submit` or `/quality` before verifying the code works is backwards broken code that passes lint is still broken code. Verify first, then let the user decide next steps.
47
+ YOU MUST NOT mark work complete without verification. Suggesting `/submit` or `/quality` before verifying the code works is backwards: broken code that passes lint is still broken code. Verify first, then let the user decide next steps.
48
48
 
49
49
  ## Leave it better than you found it
50
50
 
51
- Every agent interaction should leave the codebase in a better state. If you encounter a broken test, a console error, an error overlay, a lint warning, or any other issue while working fix it. This applies whether or not you caused it and whether or not it is related to your current task.
51
+ Every agent interaction should leave the codebase in a better state. If you encounter a broken test, a console error, an error overlay, a lint warning, or any other issue while working, fix it. This applies whether or not you caused it and whether or not it is related to your current task.
52
52
 
53
- Do not classify issues as "pre-existing" to justify skipping them context compaction erases your memory of changes made earlier in the session, so what looks pre-existing is often something you introduced. Even if you truly did not cause it, the goal is zero issues, not blame assignment. Fix it anyway. Do not argue with the user about whether an issue is yours to fix. It is.
53
+ Do not classify issues as "pre-existing" to justify skipping them. Context compaction erases your memory of changes made earlier in the session, so what looks pre-existing is often something you introduced. Even if you truly did not cause it, the goal is zero issues, not blame assignment. Fix it anyway. Do not argue with the user about whether an issue is yours to fix. It is.
54
+
55
+ ## Versioned sources win over memory
56
+
57
+ When a recalled memory conflicts with the wiki, a `.claude/rules/*.md` file, `CLAUDE.md`, or a skill, YOU MUST follow the versioned source and ignore the memory. Memory is personal, unauditable, and often wrong. Agents save memories from misunderstandings or outdated context, and the user cannot easily review what's been saved.
58
+
59
+ Anything checked into git is the contract. Memory is at most a personal hint. "My memory says otherwise" is never a valid reason to deviate from a wiki page, a rule, or a skill. If you catch yourself reasoning that way, the memory is the problem.
60
+
61
+ When you detect a conflict: follow the versioned source, remove the offending memory file (and its `MEMORY.md` entry), and report the conflict so the user knows.
62
+
63
+ See `simpleapps:wiki` "Wiki Over Memory" for the full priority rules.
54
64
 
55
65
  ## RFC 2119 keywords are binding
56
66
 
@@ -62,9 +72,9 @@ When a wiki page, skill, rule, spec, or issue uses MUST, MUST NOT, SHALL, or SHA
62
72
  - you judge the requirement unnecessary
63
73
  - it is inconvenient
64
74
 
65
- If a MUST seems wrong, impossible, or in conflict with another MUST STOP and ask the user. Do not silently relax it and proceed. The writer chose the keyword deliberately; overriding it is the agent substituting its judgment for the writer's. SHOULD allows deviation only with a factual justification about the current situation convenience and time pressure are never valid justifications.
75
+ If a MUST seems wrong, impossible, or in conflict with another MUST, STOP and ask the user. Do not silently relax it and proceed. The writer chose the keyword deliberately; overriding it is the agent substituting its judgment for the writer's. SHOULD allows deviation only with a factual justification about the current situation. Convenience and time pressure are never valid justifications.
66
76
 
67
- Session examples do not override written directives. If code in the session contradicts a MUST from the wiki or a skill, the session code is the problem flag it, do not use it as permission to violate the MUST.
77
+ Session examples do not override written directives. If code in the session contradicts a MUST from the wiki or a skill, the session code is the problem. Flag it, do not use it as permission to violate the MUST.
68
78
 
69
79
  See `simpleapps:writing-style` for the full reading-compliance rules.
70
80
 
@@ -78,15 +88,19 @@ When a check fails, the solution is ALWAYS to fix the underlying code. NEVER:
78
88
  - Suppress warnings, lower coverage thresholds, or modify quality configs
79
89
  - Add `--no-verify`, `--force`, or flags that bypass checks
80
90
 
81
- These actions hide problems they do not fix them. If a rule or test seems wrong, investigate why it exists before concluding it should change. Rules exist for reasons. If after investigation it genuinely does not apply, explain the reasoning to the user and let them decide do not unilaterally disable it.
91
+ These actions hide problems; they do not fix them. If a rule or test seems wrong, investigate why it exists before concluding it should change. Rules exist for reasons. If after investigation it genuinely does not apply, explain the reasoning to the user and let them decide. Do not unilaterally disable it.
92
+
93
+ ## Check the branch before non-trivial work
94
+
95
+ Several lifecycle commands (`/wip`, `/investigate`, `/implement`, `/submit`) repeat the same check: run `git -C repo branch --show-current` and warn the user if the branch is unexpected (not `main`, not a feature branch named after the issue). This is a shared hygiene step. If you find yourself doing meaningful work on an unexpected branch, stop and confirm with the user before continuing. Branching mistakes compound silently.
82
96
 
83
97
  ## Track progress
84
98
 
85
- Use TodoRead/TodoWrite on multi-step tasks. Mark items in-progress before starting, completed after verifying.
99
+ Use TaskCreate/TaskUpdate/TaskList on multi-step tasks. Mark items in_progress before starting, completed after verifying. Do NOT batch completions; update each task as it finishes so the list reflects real state.
86
100
 
87
101
  ## Never prompt for git actions
88
102
 
89
- MUST NOT ask "want me to commit?", "should I submit?", "ready for a PR?", "want me to push?", or ANY variation after completing work. Do not hint at it either "if you're happy with this, you can run /submit" is the same thing with extra words. The user knows their own workflow. They will say "commit", `/submit`, or equivalent when they are ready.
103
+ MUST NOT ask "want me to commit?", "should I submit?", "ready for a PR?", "want me to push?", or ANY variation after completing work. Do not hint at it either: "if you're happy with this, you can run /submit" is the same thing with extra words. The user knows their own workflow. They will say "commit", `/submit`, or equivalent when they are ready.
90
104
 
91
105
  After completing work: report what changed, suggest `/verify` if untested, then stop. That is the entire post-work protocol. No git prompts. No shipping suggestions.
92
106
 
@@ -98,12 +112,12 @@ After completing work: report what changed, suggest `/verify` if untested, then
98
112
 
99
113
  ## Be persistent with browser automation
100
114
 
101
- When using Chrome tools, do not give up after the first failure. Pages are dynamic elements may not be visible yet, selectors may need adjusting, or the page may need time to load.
115
+ When using Chrome tools, do not give up after the first failure. Pages are dynamic: elements may not be visible yet, selectors may need adjusting, or the page may need time to load.
102
116
 
103
- Accessibility features make sites machine-readable the same semantic HTML, ARIA labels, landmark roles, and alt text that help screen reader users also help you navigate pages during Chrome automation. When looking for elements, prefer ARIA roles and labels over brittle CSS selectors. When reviewing or writing frontend code, strong accessibility is not just a user concern it directly improves your ability to automate and verify the site, and search engines benefit from the same semantic signals.
117
+ Accessibility features make sites machine-readable. The same semantic HTML, ARIA labels, landmark roles, and alt text that help screen reader users also help you navigate pages during Chrome automation. When looking for elements, prefer ARIA roles and labels over brittle CSS selectors. When reviewing or writing frontend code, strong accessibility is not just a user concern; it directly improves your ability to automate and verify the site, and search engines benefit from the same semantic signals.
104
118
 
105
119
  Before giving up on a browser task:
106
- - Look for ARIA labels, roles, and semantic elements first they are the most reliable selectors
120
+ - Look for ARIA labels, roles, and semantic elements first; they are the most reliable selectors
107
121
  - Try a different selector or approach (text search, CSS selector, coordinates)
108
122
  - Scroll to reveal elements that may be off-screen
109
123
  - Wait for the page to finish loading, then retry
@@ -114,9 +128,9 @@ Two failed attempts with the *same* approach means change strategy, not stop ent
114
128
 
115
129
  ## Good enough is done
116
130
 
117
- Working code that meets the requirements is good enough ship it. Do not chase diminishing returns by over-polishing, refactoring working code, or improving what already works. The cost of continued refinement exceeds its value. Stop when the task is done, not when you run out of improvements to make.
131
+ Working code that meets the requirements is good enough; ship it. Do not chase diminishing returns by over-polishing, refactoring working code, or improving what already works. The cost of continued refinement exceeds its value. Stop when the task is done, not when you run out of improvements to make.
118
132
 
119
- The distinction: polishing task-specific code is local optimization it makes one site marginally better but does not move the system forward. Extracting custom code into shared packages removes a system constraint every site that would have reimplemented the same thing benefits. Local optimization is waste. Removing system constraints compounds. Flag extraction opportunities per "Improve the system" below, but do not polish the task code itself.
133
+ The distinction: polishing task-specific code is local optimization. It makes one site marginally better but does not move the system forward. Extracting custom code into shared packages removes a system constraint; every site that would have reimplemented the same thing benefits. Local optimization is waste. Removing system constraints compounds. Flag extraction opportunities per "Improve the system" below, but do not polish the task code itself.
120
134
 
121
135
  ## Recover from mistakes
122
136
 
@@ -124,6 +138,6 @@ Wrong approach? Stop, revert, try differently. Do not keep layering fixes on a b
124
138
 
125
139
  ## Improve the system, not just the output
126
140
 
127
- Removing daily work is more important than doing daily work. While completing a task, notice friction: unnecessary manual steps, repeated patterns that could be shared, error-prone processes that could be automated, custom code that duplicates a package export. When you spot these, flag them suggest a package addition, a script, a skill improvement, or a workflow change. The value of eliminating a step that runs every day far exceeds the value of completing it one more time.
141
+ Removing daily work is more important than doing daily work. While completing a task, notice friction: unnecessary manual steps, repeated patterns that could be shared, error-prone processes that could be automated, custom code that duplicates a package export. When you spot these, flag them. Suggest a package addition, a script, a skill improvement, or a workflow change. The value of eliminating a step that runs every day far exceeds the value of completing it one more time.
128
142
 
129
- This is not scope creep on the code. "Do exactly what was asked" still applies to the task. But improving the system the task runs in making skills clearer, workflows smoother, shared code more complete is always in scope. File an issue, update a skill, or mention it in your report.
143
+ This is not scope creep on the code. "Do exactly what was asked" still applies to the task. But improving the system the task runs in (making skills clearer, workflows smoother, shared code more complete) is always in scope. File an issue, update a skill, or mention it in your report.
@@ -14,7 +14,7 @@ allowed-tools:
14
14
  1. **Client request** arrives in Basecamp (todo, message, or comment)
15
15
  2. **Read and summarize** the Basecamp todo to understand the request
16
16
  3. **Create a GitHub issue** with technical details for implementation
17
- 4. **Cross-link** Basecamp todo URL in the GitHub issue body, GitHub issue URL in Basecamp todo comments
17
+ 4. **Cross-link**: Basecamp todo URL in the GitHub issue body, GitHub issue URL in Basecamp todo comments
18
18
  5. **Do the work** in code, referencing the GitHub issue
19
19
  6. **Report back** through Basecamp for the client; keep implementation details in GitHub
20
20
 
@@ -25,9 +25,9 @@ allowed-tools:
25
25
  | **Basecamp** | Client-facing | Task requests, status updates, client communication |
26
26
  | **GitHub Issues** | Developer-facing | Technical details, implementation, internal findings |
27
27
 
28
- Basecamp todos and GitHub issues SHOULD cross-link (many-to-many one todo MAY relate to multiple issues and vice versa).
28
+ Basecamp todos and GitHub issues SHOULD cross-link (many-to-many: one todo MAY relate to multiple issues and vice versa).
29
29
 
30
- **Note**: GitHub access is granted on request. If the user does not have repo access, skip steps 3-5 above and use Basecamp only. Do not assume access check with `gh` or ask the user.
30
+ **Note**: GitHub access is granted on request. If the user does not have repo access, skip steps 3-5 above and use Basecamp only. Do not assume access. Check with `gh` or ask the user.
31
31
 
32
32
  ## Tooling
33
33
 
@@ -50,7 +50,7 @@ gh issue create --repo simpleapps-com/<repo> \
50
50
  <basecamp_todo_url>
51
51
 
52
52
  ## Client
53
- <client/project name> <domain> (siteId: <siteId>)
53
+ <client/project name>: <domain> (siteId: <siteId>)
54
54
 
55
55
  ## Summary
56
56
  <technical summary of what needs to be done>
@@ -78,7 +78,7 @@ The full workflow from task to delivery, each step feeding the next:
78
78
  | Scaffold | `/wip` | Create a WIP file from Basecamp or GitHub issue |
79
79
  | Research | `/investigate` | Explore codebase, update WIP with findings |
80
80
  | Align | `/discuss` | Conversational alignment before acting |
81
- | Build | `/implement` | Execute the plan code changes only, no commits |
81
+ | Build | `/implement` | Execute the plan: code changes only, no commits |
82
82
  | Code checks | `/quality` | Lint, typecheck, test, package freshness |
83
83
  | Solution audit | `/sanity-check` | Did we solve the right problem without commission/omission errors? |
84
84
  | Browser checks | `/verify` | Walk through wiki's Testing.md checklist in Chrome |
@@ -86,9 +86,9 @@ The full workflow from task to delivery, each step feeding the next:
86
86
  | Stage | `/deploy` | Deploy to staging (merge PRs, trigger staging build) |
87
87
  | Release | `/publish` | Version bump, tag, release to production (with verification) |
88
88
 
89
- Not every task uses all steps. Most daily work ends at `/submit`. `/deploy` and `/publish` are used less frequently `/publish` is intentionally rare and requires explicit verification of the exact version going to production.
89
+ Not every task uses all steps. Most daily work ends at `/submit`. `/deploy` and `/publish` are used less frequently. `/publish` is intentionally rare and requires explicit verification of the exact version going to production.
90
90
 
91
- The three shipping commands (`/submit`, `/deploy`, `/publish`) read project-specific steps from `wiki/Deployment.md`. They refuse to operate if the Deployment page is missing run `/curate-wiki` to generate it from the codebase.
91
+ The three shipping commands (`/submit`, `/deploy`, `/publish`) read project-specific steps from `wiki/Deployment.md`. They refuse to operate if the Deployment page is missing. Run `/curate-wiki` to generate it from the codebase.
92
92
 
93
93
  Commands like `/research` and `/discuss` can be used at any stage. `/quality`, `/verify`, `/curate-wiki`, and `/wiki-audit` can run independently.
94
94