@simpleapps-com/augur-skills 2026.4.8 → 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simpleapps-com/augur-skills",
3
- "version": "2026.04.8",
3
+ "version": "2026.04.10",
4
4
  "description": "Install curated Claude Code skills",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -25,9 +25,9 @@ All 5 data tools (`augur_list`, `augur_get`, `augur_create`, `augur_update`, `au
25
25
 
26
26
  Always start with discovery:
27
27
 
28
- 1. `augur_sites()` see which sites are configured and which is default
29
- 2. `augur_discover()` lists all available services
30
- 3. `augur_discover(service="<name>")` lists endpoints for a specific service
28
+ 1. `augur_sites()`: see which sites are configured and which is default
29
+ 2. `augur_discover()`: lists all available services
30
+ 3. `augur_discover(service="<name>")`: lists endpoints for a specific service
31
31
  4. Use data tools for CRUD, passing `site` when targeting a non-default site
32
32
 
33
33
  Do NOT hardcode service names or endpoints. Use `augur_discover` to find them at runtime.
@@ -38,10 +38,10 @@ Credentials resolve automatically from `.simpleapps/` directories.
38
38
 
39
39
  Resolution order (first match wins):
40
40
 
41
- 1. **Env vars** `AUGUR_TOKEN` + `AUGUR_SITE_ID`
42
- 2. **Explicit file** `AUGUR_CREDS_FILE` env var pointing to a JSON file
43
- 3. **Project file** `<cwd>/.simpleapps/augur-api.json`
44
- 4. **Global file** `~/.simpleapps/augur-api.json`
41
+ 1. **Env vars**: `AUGUR_TOKEN` + `AUGUR_SITE_ID`
42
+ 2. **Explicit file**: `AUGUR_CREDS_FILE` env var pointing to a JSON file
43
+ 3. **Project file**: `<cwd>/.simpleapps/augur-api.json`
44
+ 4. **Global file**: `~/.simpleapps/augur-api.json`
45
45
 
46
46
  Project and global files are merged (project takes precedence).
47
47
 
@@ -67,9 +67,9 @@ Project and global files are merged (project takes precedence).
67
67
 
68
68
  Documentation hub: https://augur-api.info/
69
69
 
70
- - **Service directory** https://items.augur-api.com/llms.txt lists all available services
71
- - **Per-service docs** `https://{service}.augur-api.com/llms.txt` (LLM-friendly), `/openapi.json`, `/postman.json`, `/endpoints.jsonl`
72
- - **FAQ for agents** https://augur-api.info/faq.md (auth, pagination, rate limits)
70
+ - **Service directory**: https://items.augur-api.com/llms.txt lists all available services
71
+ - **Per-service docs**: `https://{service}.augur-api.com/llms.txt` (LLM-friendly), `/openapi.json`, `/postman.json`, `/endpoints.jsonl`
72
+ - **FAQ for agents**: https://augur-api.info/faq.md (auth, pagination, rate limits)
73
73
 
74
74
  Services include items, pricing, commerce, orders, customers, payments, shipping, open-search, and more. Use `augur_discover` at runtime rather than hardcoding service names.
75
75
 
@@ -79,3 +79,13 @@ If tools return authentication errors:
79
79
  - Check for `.simpleapps/augur-api.json` in the project directory or home directory
80
80
  - Verify the file contains valid credentials (single-site or multi-site format)
81
81
  - Fallback: set `AUGUR_TOKEN` and `AUGUR_SITE_ID` env vars
82
+
83
+ ## When the MCP Server Is Unavailable
84
+
85
+ If `augur_*` tools are not present in the toolset (server not configured) or every call returns connection errors:
86
+
87
+ 1. Stop trying. Repeated calls will keep failing.
88
+ 2. Tell the user the Augur API MCP is unavailable and ask whether to (a) fix it, (b) skip the data check, or (c) use a different approach (e.g., reading data directly from the codebase, asking the user for the value)
89
+ 3. MUST NOT fabricate API responses or guess at data the API would have returned
90
+
91
+ There is no documented HTTP fallback. The MCP server holds the credential and routing logic. If the MCP is down, that path is closed for this session.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: augur-packages
3
- description: Shared npm packages under @simpleapps-com/augur-*. Directs agents to check installed packages before writing custom code. This skill is a starting point always read the actual package code for current API surface.
3
+ description: Shared npm packages under @simpleapps-com/augur-*. Directs agents to check installed packages before writing custom code. This skill is a starting point; always read the actual package code for current API surface.
4
4
  allowed-tools:
5
5
  - Read
6
6
  - Glob
@@ -11,7 +11,7 @@ allowed-tools:
11
11
 
12
12
  ## Custom code is a liability. Shared code is an asset.
13
13
 
14
- Every line of custom site code carries maintenance cost it must be understood, tested, and updated by whoever touches it next. Shared packages are the opposite: maintained once, benefiting every site. When you write custom code that a package already handles, you are adding a liability. When you adopt a package export, you are removing one.
14
+ Every line of custom site code carries maintenance cost: it must be understood, tested, and updated by whoever touches it next. Shared packages are the opposite: maintained once, benefiting every site. When you write custom code that a package already handles, you are adding a liability. When you adopt a package export, you are removing one.
15
15
 
16
16
  This means: always prefer package solutions over custom code. When no package solution exists but the code would benefit other sites, suggest it as a package addition. The goal is to shrink the liability (custom code) and grow the asset (shared packages) over time.
17
17
 
@@ -25,23 +25,23 @@ This skill is a **stub, not an archive**. New packages are created, existing pac
25
25
 
26
26
  **Always read the installed packages' documentation in `node_modules/`:**
27
27
 
28
- 1. Use `Glob("repo/node_modules/@simpleapps-com/*")` to discover ALL available packages there may be packages not listed here
29
- 2. Read `repo/node_modules/@simpleapps-com/<package>/llms.txt` machine-readable, lists every export with descriptions and usage examples. This is the fastest path to discovering what exists.
28
+ 1. Use `Glob("repo/node_modules/@simpleapps-com/*")` to discover ALL available packages. There may be packages not listed here.
29
+ 2. Read `repo/node_modules/@simpleapps-com/<package>/llms.txt`, which is machine-readable and lists every export with descriptions and usage examples. This is the fastest path to discovering what exists.
30
30
  3. Read `repo/node_modules/@simpleapps-com/<package>/README.md` for full API docs, code examples, and "Replaces" guidance
31
- 4. MUST NOT read `dist/`, `.d.ts`, or compiled JS files to discover capabilities they are minified, chunked, and incomplete. The README and llms.txt are the source of truth.
31
+ 4. MUST NOT read `dist/`, `.d.ts`, or compiled JS files to discover capabilities. They are minified, chunked, and incomplete. The README and llms.txt are the source of truth.
32
32
 
33
33
  When this skill and the installed docs disagree, **the installed docs win**. This skill exists to point you in the right direction, not to replace reading the docs.
34
34
 
35
35
  ## Known Packages
36
36
 
37
- These are starting hints not a complete list. Always check `node_modules/@simpleapps-com/` for the full set.
37
+ These are starting hints, not a complete list. Always check `node_modules/@simpleapps-com/` for the full set.
38
38
 
39
39
  | Package | Purpose |
40
40
  |---------|---------|
41
41
  | `augur-utils` | Types, formatters, cache config, Valibot schemas. Zero framework dependencies. |
42
42
  | `augur-web` | shadcn/Radix UI components. Per-component entry points. |
43
43
  | `augur-hooks` | React Query hooks and Zustand stores. Cross-platform. |
44
- | `augur-server` | Server-side utilities for Next.js Redis caching, auth factory, query client. |
44
+ | `augur-server` | Server-side utilities for Next.js: Redis caching, auth factory, query client. |
45
45
  | `augur-tailwind` | Tailwind v4 CSS theme. No config file needed. |
46
46
 
47
47
  ## How to Check for Package Solutions
@@ -62,33 +62,33 @@ If llms.txt shows a relevant export, read the README for full API, code examples
62
62
 
63
63
  ### Step 3: MUST NOT grep compiled output
64
64
 
65
- MUST NOT read or grep `dist/`, `.d.ts`, `.js`, or any compiled files to discover package capabilities. These are minified build artifacts unreliable for discovery. The README and llms.txt are the ONLY source of truth.
65
+ MUST NOT read or grep `dist/`, `.d.ts`, `.js`, or any compiled files to discover package capabilities. These are minified build artifacts, unreliable for discovery. The README and llms.txt are the ONLY source of truth.
66
66
 
67
67
  ### Step 4: Before filing a package issue
68
68
 
69
69
  Before creating an issue on `simpleapps-com/augur-packages` requesting a new feature:
70
70
  1. Search ALL package llms.txt files for the function/hook name
71
71
  2. Search ALL package README.md files for the concept
72
- 3. If found, the problem is site adoption not a package gap. Use the existing export.
72
+ 3. If found, the problem is site adoption, not a package gap. Use the existing export.
73
73
 
74
74
  ### Step 5: Before writing custom code
75
75
 
76
76
  Before creating a custom hook, utility, or action in a site:
77
77
  1. Search ALL package llms.txt files for similar functionality
78
78
  2. Check the augur-hooks README "Examples" section for the pattern
79
- 3. If a package export exists, use it. If it does not work as expected, file a bug on the package not a reimplementation in the site.
79
+ 3. If a package export exists, use it. If it does not work as expected, file a bug on the package, not a reimplementation in the site.
80
80
 
81
81
  ## What Stays Site-Specific
82
82
 
83
83
  MUST NOT be replaced by packages:
84
- - **Server actions** (`"use server"`) site-specific business logic
85
- - **Layout components** (Header, Footer, MainMenu) brand-specific
86
- - **Domain components** (ProductItem, CartTable, CategoryCard) compose UI primitives
87
- - **Auth callbacks** injected into package auth factory
88
- - **Cart mutation callbacks** depend on site-specific server actions
89
- - **CSS variable overrides** brand colors, fonts, radius
90
- - **next.config** image domains, redirects, security headers
91
- - **Site integrations** GA4, Maps, reCAPTCHA
84
+ - **Server actions** (`"use server"`): site-specific business logic
85
+ - **Layout components** (Header, Footer, MainMenu): brand-specific
86
+ - **Domain components** (ProductItem, CartTable, CategoryCard): compose UI primitives
87
+ - **Auth callbacks**: injected into package auth factory
88
+ - **Cart mutation callbacks**: depend on site-specific server actions
89
+ - **CSS variable overrides**: brand colors, fonts, radius
90
+ - **next.config**: image domains, redirects, security headers
91
+ - **Site integrations**: GA4, Maps, reCAPTCHA
92
92
 
93
93
  ## Suggest Package Improvements
94
94
 
@@ -102,7 +102,7 @@ The goal is to grow the packages over time so sites write less custom code.
102
102
 
103
103
  ## augur-doctor
104
104
 
105
- `augur-doctor` ships with `@simpleapps-com/augur-config`. It checks version alignment, latest versions, and platform standard conformance. Run via `pnpm augur-doctor .` from the site directory pre-approved, no permission prompt. For full documentation, see the augur-packages wiki page `guide-site-assessment.md` (use the cross-project wiki path from `simpleapps:wiki`).
105
+ `augur-doctor` ships with `@simpleapps-com/augur-config`. It checks version alignment, latest versions, and platform standard conformance. Run via `pnpm augur-doctor .` from the site directory (pre-approved, no permission prompt). For full documentation, see the augur-packages wiki page `guide-site-assessment.md` (use the cross-project wiki path from `simpleapps:wiki`).
106
106
 
107
107
  ## Platform Standards
108
108
 
@@ -29,7 +29,7 @@ This opens the browser for OAuth, user clicks "Allow", credentials are saved aut
29
29
 
30
30
  The `basecamp` MCP server is bundled with this plugin and starts automatically. API reference: https://github.com/basecamp/bcx-api
31
31
 
32
- All tools are available as `mcp__plugin_simpleapps_basecamp__*`. The tool names and parameters are self-documenting via the MCP schema do not hardcode tool signatures. Key tool groups: projects, people, todos, comments, todo lists, messages, documents, calendar events, topics, attachments/uploads, activity, access management, stars, forwards.
32
+ All tools are available as `mcp__plugin_simpleapps_basecamp__*`. The tool names and parameters are self-documenting via the MCP schema. Do not hardcode tool signatures. Key tool groups: projects, people, todos, comments, todo lists, messages, documents, calendar events, topics, attachments/uploads, activity, access management, stars, forwards.
33
33
 
34
34
  **Note**: The BCX API does not have a search endpoint. To find content, use `list_topics(project_id)` to browse, or `list_messages(project_id)` for messages. For cross-project browsing, use `list_topics()` (no project_id) to get recent topics across all projects.
35
35
 
@@ -43,9 +43,9 @@ A URL like `https://basecamp.com/2805226/projects/18932786/todos/514631271` give
43
43
 
44
44
  Attachments can be on todos, comments, messages, or uploads. To retrieve them:
45
45
 
46
- 1. **Discover**: Call `get_todo` or `get_message` attachments appear with IDs in both the top-level section and within individual comments
46
+ 1. **Discover**: Call `get_todo` or `get_message`. Attachments appear with IDs in both the top-level section and within individual comments.
47
47
  2. **Inspect** (optional): Call `get_attachment(project_id, attachment_id)` to see metadata, size, content type, and download URL
48
- 3. **Download**: Call `download_attachment(project_id, attachment_id)` saves to `~/.simpleapps/downloads/{project_id}/`
48
+ 3. **Download**: Call `download_attachment(project_id, attachment_id)`. Saves to `~/.simpleapps/downloads/{project_id}/`.
49
49
  4. **Read**: Use the `Read` tool on the local file path to view content (works for images, PDFs, Excel, text)
50
50
 
51
51
  To browse all attachments in a project, use `list_attachments(project_id)`.
@@ -74,9 +74,9 @@ If the MCP server is unavailable (credentials expired, server not running), use
74
74
  | Todo lists | `/projects/<project_id>/todolists` |
75
75
  | Documents | `/projects/<project_id>/documents` |
76
76
 
77
- **Me** page (`/people/<person_id>`) open to-dos (~45+ shows a "See all X open to-dos" link, YOU MUST click it). The full list is at `/people/<person_id>/outstanding_todos`.
77
+ **Me** page (`/people/<person_id>`): open to-dos (~45+ shows a "See all X open to-dos" link, YOU MUST click it). The full list is at `/people/<person_id>/outstanding_todos`.
78
78
 
79
- **JSON API via Chrome**: Navigate to `/api/v1/projects/<project_id>/todos/<todo_id>.json` then use `get_page_text`. WebFetch will NOT work Chrome carries session cookies.
79
+ **JSON API via Chrome**: Navigate to `/api/v1/projects/<project_id>/todos/<todo_id>.json` then use `get_page_text`. WebFetch will NOT work; Chrome carries session cookies.
80
80
 
81
81
  ## Tips
82
82
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: bash-simplicity
3
- description: Bash command conventions one command per call, use dedicated tools over shell equivalents, check wiki for approved commands. Load this skill before running Bash commands.
3
+ description: Bash command conventions. One command per call, use dedicated tools over shell equivalents, check wiki for approved commands. Load this skill before running Bash commands.
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -8,13 +8,13 @@ user-invocable: false
8
8
 
9
9
  ## Why This Matters
10
10
 
11
- A complex command feels efficient do more in one call. But the more complex the command, the higher the probability it triggers a permission prompt. A permission prompt blocks the agent until the user responds. If the user doesn't see it for an hour, that hour is lost.
11
+ A complex command feels efficient: do more in one call. But the more complex the command, the higher the probability it triggers a permission prompt. A permission prompt blocks the agent until the user responds. If the user doesn't see it for an hour, that hour is lost.
12
12
 
13
- **Simple commands are faster than complex ones because they never wait for a human.** Ten simple commands that execute instantly are faster than one complex command that waits an hour for approval. The agent's goal is to complete work a blocked prompt completes nothing.
13
+ **Simple commands are faster than complex ones because they never wait for a human.** Ten simple commands that execute instantly are faster than one complex command that waits an hour for approval. The agent's goal is to complete work; a blocked prompt completes nothing.
14
14
 
15
15
  The entire plugin system exists to remove the user as the bottleneck. Every permission prompt puts them back in the critical path.
16
16
 
17
- **Three tiers of execution speed always use the highest tier available:**
17
+ **Three tiers of execution speed. Always use the highest tier available:**
18
18
 
19
19
  | Tier | Method | Speed | Example |
20
20
  |------|--------|-------|---------|
@@ -26,7 +26,7 @@ Prefer tier 1 over tier 2. Use tier 2 only when no dedicated tool exists. NEVER
26
26
 
27
27
  ## The Bash Tool Is Not a Terminal
28
28
 
29
- The Bash tool is a managed environment, not a raw shell. It already captures stdout, stderr, and the exit code automatically. There is NEVER a reason to add shell plumbing every shell operator triggers a permission prompt that blocks the user for zero benefit.
29
+ The Bash tool is a managed environment, not a raw shell. It already captures stdout, stderr, and the exit code automatically. There is NEVER a reason to add shell plumbing. Every shell operator triggers a permission prompt that blocks the user for zero benefit.
30
30
 
31
31
  **If the Bash tool already does it, do not do it yourself:**
32
32
 
@@ -39,7 +39,7 @@ The Bash tool is a managed environment, not a raw shell. It already captures std
39
39
  | Pass output to another command | Write to a tmp file | `$(...)`, backticks |
40
40
  | Run inline code | Use Read/Grep/Edit tools | `node -e`, `python -c` |
41
41
 
42
- **One command per Bash call. No operators. No plumbing. If the command has a `;`, `&&`, `|`, `$()`, `2>&1`, or `2>/dev/null` in it it is wrong.**
42
+ **One command per Bash call. No operators. No plumbing. If the command has a `;`, `&&`, `|`, `$()`, `2>&1`, or `2>/dev/null` in it, it is wrong.**
43
43
 
44
44
  ## Use Dedicated Tools
45
45
 
@@ -55,10 +55,10 @@ Dedicated tools are faster, require no permission, and produce better output. MU
55
55
 
56
56
  Reserve Bash for commands that have no dedicated tool equivalent: build tools, test runners, git, package managers, and system commands.
57
57
 
58
- These commands are **denied** in project settings and will always be rejected do not attempt them:
58
+ These commands are **denied** in project settings and will always be rejected. Do not attempt them:
59
59
  `cd`, `cat`, `grep`, `rg`, `find`, `sed`, `awk`, `head`, `tail`, `sleep`, `kill`, `pkill`
60
60
 
61
- MUST NOT use `node -e` or `python -c` to run inline scripts these trigger permission prompts. If you need to read a file, use the Read tool. If you need to process data, do it in your response, not in a shell script.
61
+ MUST NOT use `node -e` or `python -c` to run inline scripts. These trigger permission prompts. If you need to read a file, use the Read tool. If you need to process data, do it in your response, not in a shell script.
62
62
 
63
63
  ## Background Tasks
64
64
 
@@ -68,7 +68,7 @@ When you start a background task with `run_in_background`, you receive a task ID
68
68
  - **Check output**: use `TaskGet` or `Read` on the output file
69
69
  - **List running tasks**: use `TaskList`
70
70
 
71
- MUST NOT use `kill` or `pkill` to stop background tasks these are denied and will fail. Use `TaskStop` instead it cleanly shuts down the process and updates internal tracking.
71
+ MUST NOT use `kill` or `pkill` to stop background tasks. These are denied and will fail. Use `TaskStop` instead. It cleanly shuts down the process and updates internal tracking.
72
72
 
73
73
  If a process was started **outside your session** (by the user in a terminal), you cannot stop it with `TaskStop`. Ask the user to restart or stop it themselves.
74
74
 
@@ -76,15 +76,15 @@ If a process was started **outside your session** (by the user in a terminal), y
76
76
 
77
77
  When a dev server fails with EADDRINUSE, a process from a previous session is occupying the port. Follow this sequence:
78
78
 
79
- 1. Check `TaskList` if the task is listed, use `TaskStop`
80
- 2. If `TaskList` is empty, the process is from outside your session ask the user: "Port N is in use by a process from a previous session. Can you stop it?"
81
- 3. MUST NOT attempt `kill`, `pkill`, or ask for permission to kill these are denied and waste turns
79
+ 1. Check `TaskList`. If the task is listed, use `TaskStop`.
80
+ 2. If `TaskList` is empty, the process is from outside your session. Ask the user: "Port N is in use by a process from a previous session. Can you stop it?"
81
+ 3. MUST NOT attempt `kill`, `pkill`, or ask for permission to kill. These are denied and waste turns.
82
82
 
83
83
  Do not retry the server start until the user confirms the port is free.
84
84
 
85
85
  ## Cross-Project Searching
86
86
 
87
- When looking at another project's code, use dedicated tools with the project path MUST NOT use shell commands:
87
+ When looking at another project's code, use dedicated tools with the project path. MUST NOT use shell commands.
88
88
 
89
89
  Wrong: `find {path}/repo -name "*.ts" -exec grep -l "pattern" {} \; 2>/dev/null | head -10`
90
90
  Right: `Grep(pattern: "pattern", path: "{path}/repo", glob: "*.ts")`
@@ -92,10 +92,10 @@ Right: `Grep(pattern: "pattern", path: "{path}/repo", glob: "*.ts")`
92
92
  Wrong: `ls {path}/repo/src/components/`
93
93
  Right: `Glob(pattern: "{path}/repo/src/components/**/*")`
94
94
 
95
- All project paths are known and predictable (see `simpleapps:wiki` Cross-Project Wiki Access). MUST NOT search the filesystem with `find` or download from the internet just use the dedicated tool with the known path.
95
+ All project paths are known and predictable (see `simpleapps:wiki` Cross-Project Wiki Access). MUST NOT search the filesystem with `find` or download from the internet. Just use the dedicated tool with the known path.
96
96
 
97
97
  ## Check Before Prompting
98
98
 
99
99
  Before running a command that will trigger a permission prompt, check the wiki and project settings for approved commands. The wiki documents which commands are pre-approved and how to invoke them. Unnecessary permission prompts interrupt the user's flow.
100
100
 
101
- **`pnpm:*` is pre-approved** any command in `package.json` scripts runs without permission via `pnpm <script>`. If a tool needs to run repeatedly (linters, formatters, test runners), it SHOULD be a `package.json` script so it can run via pnpm without prompting. Suggest adding missing scripts when you notice the gap.
101
+ **`pnpm:*` is pre-approved**: any command in `package.json` scripts runs without permission via `pnpm <script>`. If a tool needs to run repeatedly (linters, formatters, test runners), it SHOULD be a `package.json` script so it can run via pnpm without prompting. Suggest adding missing scripts when you notice the gap.
@@ -10,7 +10,7 @@ allowed-tools:
10
10
 
11
11
  ## Entry Points
12
12
 
13
- - **Doc index**: https://code.claude.com/docs/llms.txt fetch first, find relevant page URL, then fetch that page
14
- - **Full content**: https://code.claude.com/docs/llms-full.txt — large, use when broad context is needed
13
+ - **Doc index**: https://code.claude.com/docs/llms.txt. Fetch first, find relevant page URL, then fetch that page.
14
+ - **Full content**: https://code.claude.com/docs/llms-full.txt. Large, use when broad context is needed.
15
15
 
16
- IMPORTANT: YOU MUST start from `llms.txt` for current URLs. Doc pages are renamed and reorganized with each release never rely on memorized URLs.
16
+ IMPORTANT: YOU MUST start from `llms.txt` for current URLs. Doc pages are renamed and reorganized with each release. Never rely on memorized URLs.
@@ -6,7 +6,7 @@ user-invocable: false
6
6
 
7
7
  # Context Efficiency
8
8
 
9
- Always-loaded content (CLAUDE.md, rules without `paths`) is paid on every prompt even when irrelevant. Every token spent here is a token taken from working context. Write always-loaded content as pointers, not content.
9
+ Always-loaded content (CLAUDE.md, rules without `paths`) is paid on every prompt, even when irrelevant. Every token spent here is a token taken from working context. Write always-loaded content as pointers, not content.
10
10
 
11
11
  ## Context Loading Hierarchy
12
12
 
@@ -25,17 +25,17 @@ Always-loaded content (CLAUDE.md, rules without `paths`) is paid on every prompt
25
25
  - **Skill descriptions**: 2% of context window for all skills combined (16K char fallback). Override with `SLASH_COMMAND_TOOL_CHAR_BUDGET`.
26
26
  - **SKILL.md**: under 500 lines. Move detail to supporting files.
27
27
  - **Auto memory**: first 200 lines of MEMORY.md loaded. Topic files on demand.
28
- - **Overhead**: ~31% of a 200K context window is consumed by system prompt, tools, and autocompact buffer before you type anything.
28
+ - **Overhead**: a meaningful share of the context window is consumed by system prompt, tool definitions, and autocompact buffer before you type anything. The exact percentage depends on which MCP servers and tools are loaded. Run `/context` to see the current breakdown.
29
29
 
30
30
  ## Evergreen Content
31
31
 
32
- Always-loaded content MUST be evergreen true regardless of when it's read. MUST NOT contain:
32
+ Always-loaded content MUST be evergreen, true regardless of when it's read. MUST NOT contain:
33
33
 
34
- - **File counts or lists** "12 skills" becomes wrong the next commit. Say "check `ls plugins/simpleapps/skills/`" instead.
35
- - **Version numbers** "currently v2026.03.8" is stale immediately. Point to the VERSION file.
36
- - **Process data** timestamps, recent activity, who did what. That's git history.
34
+ - **File counts or lists**: "12 skills" becomes wrong the next commit. Say "check `ls plugins/simpleapps/skills/`" instead.
35
+ - **Version numbers**: "currently v2026.03.8" is stale immediately. Point to the VERSION file.
36
+ - **Process data**: timestamps, recent activity, who did what. That's git history.
37
37
  - **Hardcoded paths** that change across machines or environments.
38
- - **Content that duplicates the code** the code is the source of truth. Describe the pattern, link to the file.
38
+ - **Content that duplicates the code**: the code is the source of truth. Describe the pattern, link to the file.
39
39
 
40
40
  Instead: describe the **pattern**, give **1-2 examples**, and **link** to the source for the current state.
41
41
 
@@ -44,7 +44,7 @@ Instead: describe the **pattern**, give **1-2 examples**, and **link** to the so
44
44
  Always-loaded files SHOULD be pointers that invoke on-demand content:
45
45
 
46
46
  ```markdown
47
- # Git Safety (rule 3 lines, always loaded)
47
+ # Git Safety (rule, 3 lines, always loaded)
48
48
  MUST NOT commit without user approval.
49
49
  Load Skill("git-safety") for full guardrails.
50
50
  ```
@@ -53,7 +53,7 @@ The rule costs ~40 tokens per prompt. The skill costs nothing until invoked, the
53
53
 
54
54
  ### Wiki Links: Highest-ROI Pointer
55
55
 
56
- The cheapest pointer with the biggest payoff is a **wiki link in CLAUDE.md**. A link like `[Deployment](../../wiki/Deployment.md)` costs ~15 tokens but gives the agent instant access to a full page of detailed knowledge (~500-2000 tokens) on demand. CLAUDE.md SHOULD link to every wiki content page it becomes the agent's table of contents. Missing a link means the agent must guess where to find information or ask the user.
56
+ The cheapest pointer with the biggest payoff is a **wiki link in CLAUDE.md**. A link like `[Deployment](../../wiki/Deployment.md)` costs ~15 tokens but gives the agent instant access to a full page of detailed knowledge (~500-2000 tokens) on demand. CLAUDE.md SHOULD link to every wiki content page; it becomes the agent's table of contents. Missing a link means the agent must guess where to find information or ask the user.
57
57
 
58
58
  ## When to Use Each Layer
59
59
 
@@ -19,8 +19,8 @@ Spec: https://www.conventionalcommits.org/en/v1.0.0/
19
19
 
20
20
  ## Types
21
21
 
22
- - `feat` new feature (SemVer MINOR)
23
- - `fix` bug fix (SemVer PATCH)
22
+ - `feat`: new feature (SemVer MINOR)
23
+ - `fix`: bug fix (SemVer PATCH)
24
24
  - Also permitted: `build`, `chore`, `ci`, `docs`, `style`, `refactor`, `perf`, `test`
25
25
 
26
26
  ## Rules
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: deployment
3
- description: Project deployment conventions reads the wiki Deployment page and executes submit, deploy, or publish steps. Refuses to operate without a Deployment page.
3
+ description: Project deployment conventions. Reads the wiki Deployment page and executes submit, deploy, or publish steps. Refuses to operate without a Deployment page.
4
4
  user-invocable: false
5
5
  allowed-tools:
6
6
  - Read
@@ -8,15 +8,13 @@ allowed-tools:
8
8
  - Grep
9
9
  - Bash
10
10
  - Skill(git-safety)
11
- - Skill(conventional-commits)
12
- - Skill(github)
13
11
  ---
14
12
 
15
- First, use Skill("git-safety") to load git guardrails.
13
+ First, use Skill("git-safety") to load git guardrails. The shipping commands (`/submit`, `/deploy`, `/publish`) load `conventional-commits` and `github` directly when they need them. This skill does not pre-load them.
16
14
 
17
15
  # Deployment
18
16
 
19
- This skill reads the project's `wiki/Deployment.md` and executes the steps defined there. Each project defines its own deployment workflow this skill is the executor, the wiki is the config.
17
+ This skill reads the project's `wiki/Deployment.md` and executes the steps defined there. Each project defines its own deployment workflow. This skill is the executor, the wiki is the config.
20
18
 
21
19
  ## Deployment Page Format
22
20
 
@@ -39,22 +37,32 @@ Not all projects need all three. Client sites may only have Submit and Deploy. P
39
37
 
40
38
  1. Read `wiki/Deployment.md`
41
39
  2. Find the section matching the requested action (Submit, Deploy, or Publish)
42
- 3. If the page or section is missing, **refuse to operate** tell the user to run `/curate-wiki` to generate it
40
+ 3. If the page or section is missing, **refuse to operate**. Tell the user to run `/curate-wiki` to generate it.
43
41
  4. Execute the steps in that section
44
42
 
45
43
  ## Command approval model
46
44
 
47
45
  The user invoking a command IS the approval to execute all its steps, including git writes. Do not stop to ask for confirmation mid-execution.
48
46
 
49
- - `/submit` execute all steps (commit, push, PR). Report at the end.
50
- - `/deploy` execute all steps. Report at the end.
51
- - `/publish` **EXCEPTION**: must complete the verification gate below and get secondary confirmation BEFORE executing any publish steps. This is the only command that pauses for approval.
47
+ - `/submit`: execute all steps (commit, push, PR). Report at the end.
48
+ - `/deploy`: execute all steps. Report at the end.
49
+ - `/publish`: **EXCEPTION**. Must complete the verification gate below and get secondary confirmation BEFORE executing any publish steps. This is the only command that pauses for approval.
52
50
 
53
51
  ## Guard Rails
54
52
 
55
53
  - **If `wiki/Deployment.md` does not exist, STOP IMMEDIATELY.** Do not guess, do not improvise, do not infer steps from the codebase. Tell the user to run `/curate-wiki` to generate it. Then do nothing else.
56
- - **If the relevant section (Submit, Deploy, or Publish) is missing from the page, STOP IMMEDIATELY.** Same rule do not guess the steps.
57
- - MUST NOT guess deployment steps only execute what the wiki defines
54
+ - **If the relevant section (Submit, Deploy, or Publish) is missing from the page, STOP IMMEDIATELY.** Same rule: do not guess the steps.
55
+ - MUST NOT guess deployment steps. Only execute what the wiki defines.
56
+
57
+ ## Translating Wiki Shell Commands
58
+
59
+ Wiki Deployment pages often contain shell snippets written for humans, e.g. `pnpm typecheck && pnpm test` or `git add -A; git commit -m "..."`. These violate `simpleapps:bash-simplicity` (no `&&`, `;`, `|`, `$()`).
60
+
61
+ When a wiki step uses shell operators, you MUST translate it into separate, single-command Bash calls. The wiki defines **what** to run; `bash-simplicity` defines **how** to run it. Both rules stand. One does not override the other.
62
+
63
+ Example: wiki says `pnpm typecheck && pnpm test` → make two Bash calls: `pnpm typecheck`, then `pnpm test`. If the first fails, stop and report. Do not run the second.
64
+
65
+ Translation does NOT mean skipping or reordering the wiki's logic. It means executing the same operations through compliant tool calls. If a wiki step truly requires a compound operation that cannot be split (rare), flag it and ask the user before proceeding.
58
66
 
59
67
  ## Publish Verification Gate
60
68
 
@@ -66,4 +74,4 @@ Before executing any Publish steps, MUST:
66
74
  4. Present a summary: version transition, commit count, test status
67
75
  5. Require the user to **explicitly confirm** the specific version going to production
68
76
 
69
- This is not just git-safety. It is an active verification checklist the user MUST see exactly what they are releasing and confirm that specific version.
77
+ This is not just git-safety. It is an active verification checklist. The user MUST see exactly what they are releasing and confirm that specific version.
@@ -7,10 +7,12 @@ description: Fyxer AI meeting recording integration. Covers extraction, local ca
7
7
 
8
8
  Fyxer AI records and summarizes meetings. Use the `/fyxer` command to process recordings end-to-end.
9
9
 
10
+ **Platform**: macOS only. The extraction flow uses `pbpaste` for clipboard reads. On Linux/Windows the command will fail at the clipboard step. There is no portable fallback yet.
11
+
10
12
  ## Key Conventions
11
13
 
12
14
  - **Recording URL**: `https://app.fyxer.com/call-recordings/<meeting-uuid>:<calendar-event-id>`
13
- - **Cache location**: `~/.simpleapps/fyxer/<meeting-uuid>/` contains `summary.txt`, `transcript.txt`, `message.txt`
15
+ - **Cache location**: `~/.simpleapps/fyxer/<meeting-uuid>/` contains `summary.txt`, `transcript.txt`, `message.txt`
14
16
  - **Use only the meeting UUID** (before the colon) for cache folders, duplicate checks, and frontmatter
15
17
  - **Fyxer Index**: a `Fyxer Index` document in each Basecamp project for duplicate detection. One line per posted meeting, newest first: `<meeting-uuid> | <date> | <message-id> | <subject>`
16
18
  - **Post format**: plain text with YAML frontmatter (meeting, date, time, participants, topics, fyxer-id) followed by the full transcript
@@ -18,11 +20,11 @@ Fyxer AI records and summarizes meetings. Use the `/fyxer` command to process re
18
20
 
19
21
  ## Dependencies
20
22
 
21
- - `simpleapps:basecamp` skill MCP tools for posting and index management
22
- - Chrome browser automation for extraction when cache is empty
23
+ - `simpleapps:basecamp` skill: MCP tools for posting and index management
24
+ - Chrome browser automation: for extraction when cache is empty
23
25
 
24
26
  ## Finding Posted Transcripts
25
27
 
26
28
  - Check the index: `list_documents(project_id)` then find `Fyxer Index` then `get_document`
27
29
  - View a specific transcript: `get_message(project_id, message_id)` using the message_id from the index
28
- - Browse all messages: `list_messages(project_id)` Fyxer posts use the title format `Fyxer: YYYY-MM-DD`
30
+ - Browse all messages: `list_messages(project_id)`. Fyxer posts use the title format `Fyxer: YYYY-MM-DD`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: git-safety
3
- description: Git safety guardrails MUST NOT commit, push, create PRs, or merge without explicit user approval. Load this skill before any git write operations.
3
+ description: Git safety guardrails. MUST NOT commit, push, create PRs, or merge without explicit user approval. Load this skill before any git write operations.
4
4
  user-invocable: false
5
5
  ---
6
6
 
@@ -10,20 +10,20 @@ user-invocable: false
10
10
 
11
11
  MUST NOT run any git write operation unless the user explicitly approves it. Git write operations include: `commit`, `push`, `tag`, `merge`, `rebase`, `reset`, `cherry-pick`, `stash`, `branch -D`, and any `gh` command that creates or modifies PRs, issues, or releases.
12
12
 
13
- `git add` (staging) is permitted as part of preparing to show the user what will be committed but the commit itself requires approval.
13
+ `git add` (staging) is permitted as part of preparing to show the user what will be committed, but the commit itself requires approval.
14
14
 
15
- No skill, command, or workflow overrides this rule. Even instructions like "complete all steps without stopping" do not bypass it. This applies to ALL repos the main repo, the wiki repo, and any other git repo.
15
+ No skill, command, or workflow overrides this rule. Even instructions like "complete all steps without stopping" do not bypass it. This applies to ALL repos: the main repo, the wiki repo, and any other git repo.
16
16
 
17
17
  ## Why
18
18
 
19
- Every git push, every PR, every wiki edit that hits GitHub is done under the user's credentials their name, their reputation. The user is responsible for every action taken on their behalf. That is why they decide when to commit, not the agent.
19
+ Every git push, every PR, every wiki edit that hits GitHub is done under the user's credentials: their name, their reputation. The user is responsible for every action taken on their behalf. That is why they decide when to commit, not the agent.
20
20
 
21
21
  ## How Approval Works
22
22
 
23
23
  The user gives approval in one of two ways:
24
24
 
25
- 1. **Direct instruction** the user says "commit", "push", "tag", or equivalent
26
- 2. **Shipping commands** the user invokes `/submit`, `/deploy`, or `/publish`. Invoking the command IS the approval for the git operations defined in that command's workflow.
25
+ 1. **Direct instruction**: the user says "commit", "push", "tag", or equivalent
26
+ 2. **Shipping commands**: the user invokes `/submit`, `/deploy`, or `/publish`. Invoking the command IS the approval for the git operations defined in that command's workflow.
27
27
 
28
28
  ### Approval is scoped, not blanket
29
29
 
@@ -39,7 +39,7 @@ Previous approvals do NOT grant future permissions. If the user approved a commi
39
39
 
40
40
  ### When /submit follows earlier work
41
41
 
42
- If you made changes and the user then runs `/submit`, the command starts fresh it reads the Deployment page and follows those steps. There is no conflict with earlier work. The user chose to invoke `/submit` at this moment, and that is all the approval needed for the operations within it.
42
+ If you made changes and the user then runs `/submit`, the command starts fresh. It reads the Deployment page and follows those steps. There is no conflict with earlier work. The user chose to invoke `/submit` at this moment, and that is all the approval needed for the operations within it.
43
43
 
44
44
  Do NOT ask for redundant confirmation inside `/submit` if the user just invoked it. The invocation is the approval. But each discrete git operation within the flow (commit, then push) should still be reported before execution.
45
45
 
@@ -53,4 +53,4 @@ Better yet, avoid stashing entirely. If you need to create a branch from a diffe
53
53
 
54
54
  **Do the work → report results → wait.**
55
55
 
56
- After making changes: report what was done, then stop. Do not ask "want me to commit?" or "should I push?" that wastes tokens. Just report and wait silently. The user will say "commit", "push", or run a shipping command when ready.
56
+ After making changes: report what was done, then stop. Do not ask "want me to commit?" or "should I push?". That wastes tokens. Just report and wait silently. The user will say "commit", "push", or run a shipping command when ready.
@@ -59,7 +59,7 @@ This avoids shell quoting issues with HEREDOCs and `cd` permission blocks. The W
59
59
 
60
60
  ## Issues
61
61
 
62
- MUST use `--repo simpleapps-com/<repo>` on every `gh` call. MUST ask the user which repo never assume.
62
+ MUST use `--repo simpleapps-com/<repo>` on every `gh` call. MUST ask the user which repo. Never assume.
63
63
 
64
64
  **MUST NOT use `$()` or inline content in `gh` commands.** Any `gh` command that needs a body, comment, or multi-line text MUST use the file-based flag (`--body-file`, `--comment-file`, etc.). Write the content to `tmp/` using the Write tool first, then pass the file path. This avoids `$()` command substitution which triggers a permission prompt every time. Delete the tmp file after the command succeeds.
65
65
 
@@ -103,18 +103,18 @@ Include `Closes #N` in commit body to auto-close issues.
103
103
 
104
104
  ### Commenting on existing issues
105
105
 
106
- Before adding a comment to a closed issue, check its state first with `gh issue view`. If the issue is closed but the problem still exists, reopen it with `gh issue reopen` before commenting a comment on a closed issue is easily missed.
106
+ Before adding a comment to a closed issue, check its state first with `gh issue view`. If the issue is closed but the problem still exists, reopen it with `gh issue reopen` before commenting. A comment on a closed issue is easily missed.
107
107
 
108
108
  ## Cross-Repo Issues
109
109
 
110
- Use `/file-issue` to automate this process it creates the upstream issue, cross-links back to the local issue, and adds the `blocked` label. `/triage` surfaces blocked issues in its output.
110
+ Use `/file-issue` to automate this process. It creates the upstream issue, cross-links back to the local issue, and adds the `blocked` label. `/triage` surfaces blocked issues in its output.
111
111
 
112
112
  When a project hits a blocker that depends on another team's repo, create two issues and keep working:
113
113
 
114
- 1. **Local issue** (in the site/project repo) describe the impact and what's blocked
115
- 2. **Upstream issue** (in the dependency repo) describe the ask, include reproduction steps or specifics
116
- 3. **Cross-link** reference the other issue using `simpleapps-com/repo#N` syntax in both issue bodies
117
- 4. **Don't block** continue with other tasks while waiting for the upstream fix
114
+ 1. **Local issue** (in the site/project repo): describe the impact and what's blocked
115
+ 2. **Upstream issue** (in the dependency repo): describe the ask, include reproduction steps or specifics
116
+ 3. **Cross-link**: reference the other issue using `simpleapps-com/repo#N` syntax in both issue bodies
117
+ 4. **Don't block**: continue with other tasks while waiting for the upstream fix
118
118
 
119
119
  Target repos:
120
120
 
@@ -135,7 +135,7 @@ gh pr view <number> --repo simpleapps-com/<repo>
135
135
  gh pr merge <number> --repo simpleapps-com/<repo>
136
136
  ```
137
137
 
138
- Write PR body to `tmp/pr-body.txt` using the Write tool first MUST NOT use `--body "$(cat ...)"` or any `$()` substitution.
138
+ Write PR body to `tmp/pr-body.txt` using the Write tool first. MUST NOT use `--body "$(cat ...)"` or any `$()` substitution.
139
139
 
140
140
  ## Cross-Linking with Basecamp
141
141