@simpleapps-com/augur-skills 2026.4.9 → 2026.4.11
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 +1 -1
- package/skills/simpleapps/augur-api/SKILL.md +20 -10
- package/skills/simpleapps/augur-packages/SKILL.md +19 -19
- package/skills/simpleapps/basecamp/SKILL.md +5 -5
- package/skills/simpleapps/bash-simplicity/SKILL.md +25 -15
- package/skills/simpleapps/claude-code-docs/SKILL.md +3 -3
- package/skills/simpleapps/context-efficiency/SKILL.md +9 -9
- package/skills/simpleapps/conventional-commits/SKILL.md +2 -2
- package/skills/simpleapps/deployment/SKILL.md +20 -12
- package/skills/simpleapps/fyxer/SKILL.md +6 -4
- package/skills/simpleapps/git-safety/SKILL.md +8 -8
- package/skills/simpleapps/github/SKILL.md +8 -8
- package/skills/simpleapps/project-defaults/SKILL.md +27 -24
- package/skills/simpleapps/quality/SKILL.md +15 -15
- package/skills/simpleapps/wiki/SKILL.md +86 -22
- package/skills/simpleapps/work-habits/SKILL.md +33 -19
- package/skills/simpleapps/workflow/SKILL.md +7 -7
- package/skills/simpleapps/writing-style/SKILL.md +59 -23
package/package.json
CHANGED
|
@@ -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()
|
|
29
|
-
2. `augur_discover()
|
|
30
|
-
3. `augur_discover(service="<name>")
|
|
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
|
|
42
|
-
2. **Explicit file
|
|
43
|
-
3. **Project file
|
|
44
|
-
4. **Global file
|
|
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
|
|
71
|
-
- **Per-service docs
|
|
72
|
-
- **FAQ for agents
|
|
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
|
|
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
|
|
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
|
|
29
|
-
2. Read `repo/node_modules/@simpleapps-com/<package>/llms.txt
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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"`)
|
|
85
|
-
- **Layout components** (Header, Footer, MainMenu)
|
|
86
|
-
- **Domain components** (ProductItem, CartTable, CategoryCard)
|
|
87
|
-
- **Auth callbacks
|
|
88
|
-
- **Cart mutation callbacks
|
|
89
|
-
- **CSS variable overrides
|
|
90
|
-
- **next.config
|
|
91
|
-
- **Site integrations
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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>`)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
80
|
-
2. If `TaskList` is empty, the process is from outside your session
|
|
81
|
-
3. MUST NOT attempt `kill`, `pkill`, or ask for permission to kill
|
|
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
|
|
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,20 @@ 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
|
|
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
|
+
|
|
97
|
+
## Subagent Responsibility
|
|
98
|
+
|
|
99
|
+
Subagents do NOT inherit this skill. They see only the prompt you give them. The primary agent MUST brief every subagent on bash-simplicity before delegating shell work, and owns the output that comes back.
|
|
100
|
+
|
|
101
|
+
Every subagent prompt that touches Bash MUST include a one-liner: "One command per Bash call. No operators. Use dedicated tools (Read, Grep, Glob, Edit, Write) over shell equivalents."
|
|
102
|
+
|
|
103
|
+
If a subagent returns a command containing any forbidden operator (see the table above), that is the primary agent's failure. Reject and ask for a re-plan, or translate into separate simple calls. Do not execute it. A subagent violating this is running on a stale prompt; fix the prompt.
|
|
104
|
+
|
|
105
|
+
Parallel subagents each need their own briefing.
|
|
96
106
|
|
|
97
107
|
## Check Before Prompting
|
|
98
108
|
|
|
99
109
|
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
110
|
|
|
101
|
-
**`pnpm:*` is pre-approved
|
|
111
|
+
**`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
|
|
14
|
-
- **Full content**: https://code.claude.com/docs/llms-full.txt
|
|
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
|
|
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
|
|
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**:
|
|
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
|
|
32
|
+
Always-loaded content MUST be evergreen, true regardless of when it's read. MUST NOT contain:
|
|
33
33
|
|
|
34
|
-
- **File counts or lists
|
|
35
|
-
- **Version numbers
|
|
36
|
-
- **Process data
|
|
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
|
|
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
|
|
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
|
|
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
|
|
23
|
-
- `fix
|
|
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
|
|
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
|
|
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
|
|
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
|
|
50
|
-
- `/deploy
|
|
51
|
-
- `/publish
|
|
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
|
|
57
|
-
- MUST NOT guess deployment steps
|
|
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
|
|
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>/`
|
|
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
|
|
22
|
-
- Chrome browser automation
|
|
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)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
26
|
-
2. **Shipping commands
|
|
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
|
|
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?"
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
115
|
-
2. **Upstream issue** (in the dependency repo)
|
|
116
|
-
3. **Cross-link
|
|
117
|
-
4. **Don't block
|
|
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
|
|
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
|
|