@simpleapps-com/augur-skills 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/package.json +9 -9
- package/skills/simpleapps/.gitkeep +0 -0
- package/skills/simpleapps/claude-code-docs/SKILL.md +13 -0
- package/skills/simpleapps/conventional-commits/SKILL.md +34 -0
- package/skills/simpleapps/work-habits/SKILL.md +45 -0
- package/skills/simpleapps/workflow/SKILL.md +37 -0
- package/skills/simpleapps/workflow/basecamp.md +125 -0
- package/skills/simpleapps/workflow/github.md +46 -0
- package/skills/simpleapps/writing-style/SKILL.md +65 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 SimpleApps
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simpleapps-com/augur-skills",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Install curated Claude Code skills",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -11,13 +11,6 @@
|
|
|
11
11
|
"dist",
|
|
12
12
|
"skills"
|
|
13
13
|
],
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "tsup",
|
|
16
|
-
"typecheck": "tsc --noEmit",
|
|
17
|
-
"lint": "tsc --noEmit",
|
|
18
|
-
"test": "vitest run",
|
|
19
|
-
"test:coverage": "vitest run --coverage"
|
|
20
|
-
},
|
|
21
14
|
"dependencies": {
|
|
22
15
|
"chalk": "^5.3.0",
|
|
23
16
|
"commander": "^12.0.0",
|
|
@@ -33,5 +26,12 @@
|
|
|
33
26
|
},
|
|
34
27
|
"engines": {
|
|
35
28
|
"node": ">=18.0.0"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsup",
|
|
32
|
+
"typecheck": "tsc --noEmit",
|
|
33
|
+
"lint": "tsc --noEmit",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:coverage": "vitest run --coverage"
|
|
36
36
|
}
|
|
37
|
-
}
|
|
37
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-code-docs
|
|
3
|
+
description: Claude Code documentation reference and discovery. Use when looking up Claude Code features, configuration, plugins, skills, hooks, or troubleshooting.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Claude Code Documentation
|
|
7
|
+
|
|
8
|
+
## Entry Points
|
|
9
|
+
|
|
10
|
+
- **Doc index**: https://code.claude.com/docs/llms.txt — fetch first, find relevant page URL, then fetch that page
|
|
11
|
+
- **Full content**: https://code.claude.com/docs/llms-full.txt — large, use when broad context is needed
|
|
12
|
+
|
|
13
|
+
IMPORTANT: YOU MUST start from `llms.txt` for current URLs. Doc pages are renamed and reorganized with each release — never rely on memorized URLs.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: conventional-commits
|
|
3
|
+
description: Format all commit messages per the Conventional Commits v1.0.0 spec. Use when creating commits, reviewing commit messages, or discussing git workflow.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Conventional Commits
|
|
7
|
+
|
|
8
|
+
Spec: https://www.conventionalcommits.org/en/v1.0.0/
|
|
9
|
+
|
|
10
|
+
## Format
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
<type>[optional scope]: <description>
|
|
14
|
+
|
|
15
|
+
[optional body]
|
|
16
|
+
|
|
17
|
+
[optional footer(s)]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Types
|
|
21
|
+
|
|
22
|
+
- `feat` — new feature (SemVer MINOR)
|
|
23
|
+
- `fix` — bug fix (SemVer PATCH)
|
|
24
|
+
- Also permitted: `build`, `chore`, `ci`, `docs`, `style`, `refactor`, `perf`, `test`
|
|
25
|
+
|
|
26
|
+
## Rules
|
|
27
|
+
|
|
28
|
+
- Scope is optional, in parentheses: `feat(parser):`
|
|
29
|
+
- Description MUST immediately follow the colon and space
|
|
30
|
+
- Body is optional, separated by one blank line from description
|
|
31
|
+
- Footers are optional, separated by one blank line from body
|
|
32
|
+
- Breaking changes: add `!` before colon OR use `BREAKING CHANGE:` footer (SemVer MAJOR)
|
|
33
|
+
- `BREAKING CHANGE` MUST be uppercase
|
|
34
|
+
- Footer tokens use hyphens for spaces (e.g., `Acked-by`)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: work-habits
|
|
3
|
+
description: How to work autonomously on extended tasks. Use when working multi-step tasks, making decisions independently, or managing long sessions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Work Habits
|
|
7
|
+
|
|
8
|
+
## Do exactly what was asked
|
|
9
|
+
|
|
10
|
+
Do not add features, refactor surrounding code, or "improve" beyond the request. One task asked = one task delivered. Ask before expanding scope.
|
|
11
|
+
|
|
12
|
+
## Use the right tool
|
|
13
|
+
|
|
14
|
+
Prefer dedicated tools over Bash equivalents — they are faster, need no permissions, and produce cleaner output:
|
|
15
|
+
- Read not `cat`/`head`/`tail`
|
|
16
|
+
- Grep not `grep`/`rg`
|
|
17
|
+
- Glob not `find`/`ls`
|
|
18
|
+
- Edit not `sed`/`awk`
|
|
19
|
+
|
|
20
|
+
Reserve Bash for commands that have no dedicated tool equivalent.
|
|
21
|
+
|
|
22
|
+
## Protect the context window
|
|
23
|
+
|
|
24
|
+
- Prefer targeted searches over broad exploration
|
|
25
|
+
- Use subagents for verbose operations (test runs, log analysis, large file reads)
|
|
26
|
+
- `/clear` between unrelated tasks
|
|
27
|
+
- Two sentences that answer the question beat two pages that fill the context window
|
|
28
|
+
|
|
29
|
+
## Verify your own work
|
|
30
|
+
|
|
31
|
+
Run tests, check output, compare results. YOU MUST NOT mark work complete without verification. If you can't verify, say so.
|
|
32
|
+
|
|
33
|
+
## Track progress
|
|
34
|
+
|
|
35
|
+
Use TodoRead/TodoWrite on multi-step tasks. Mark items in-progress before starting, completed after verifying.
|
|
36
|
+
|
|
37
|
+
## Know when to stop and ask
|
|
38
|
+
|
|
39
|
+
**Ask** when: requirements are ambiguous, multiple valid approaches exist, an action is destructive or irreversible, you've failed the same approach twice.
|
|
40
|
+
|
|
41
|
+
**Decide** when: the choice is implementation detail, the pattern is established elsewhere in the codebase, the task is clear and scoped.
|
|
42
|
+
|
|
43
|
+
## Recover from mistakes
|
|
44
|
+
|
|
45
|
+
Wrong approach? Stop, revert, try differently. Do not keep layering fixes on a broken foundation. Two failed attempts at the same approach = change strategy.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow
|
|
3
|
+
description: How we track and deliver work. Covers the Basecamp-to-GitHub flow for client requests, task tracking, and cross-linking. Use when working on client tasks, creating issues, or checking assignments.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workflow
|
|
7
|
+
|
|
8
|
+
## How Work Flows
|
|
9
|
+
|
|
10
|
+
1. **Client request** arrives in Basecamp (todo, message, or comment)
|
|
11
|
+
2. **Read and summarize** the Basecamp todo to understand the request
|
|
12
|
+
3. **Create a GitHub issue** with technical details for implementation
|
|
13
|
+
4. **Cross-link** — Basecamp todo URL in the GitHub issue body, GitHub issue URL in Basecamp todo comments
|
|
14
|
+
5. **Do the work** in code, referencing the GitHub issue
|
|
15
|
+
6. **Report back** through Basecamp for the client; keep implementation details in GitHub
|
|
16
|
+
|
|
17
|
+
## Tool Boundaries
|
|
18
|
+
|
|
19
|
+
| Tool | Audience | Purpose |
|
|
20
|
+
|------|----------|---------|
|
|
21
|
+
| **Basecamp** | Client-facing | Task requests, status updates, client communication |
|
|
22
|
+
| **GitHub Issues** | Developer-facing | Technical details, implementation, internal findings |
|
|
23
|
+
|
|
24
|
+
Basecamp todos and GitHub issues SHOULD cross-link (many-to-many — one todo MAY relate to multiple issues and vice versa).
|
|
25
|
+
|
|
26
|
+
**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.
|
|
27
|
+
|
|
28
|
+
## Tooling
|
|
29
|
+
|
|
30
|
+
The `basecamp` MCP server (bundled with this plugin) provides direct API access to Basecamp 2. Use MCP tools (`get_todo`, `list_my_todos`, `list_documents`, etc.) as the primary method. Chrome browser automation is the fallback if MCP is unavailable.
|
|
31
|
+
|
|
32
|
+
**First-time setup**: User MUST run `uv run basecamp-auth` once to authorize. Credentials are saved to `~/.simpleapps/basecamp.json`.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- See `basecamp.md` for MCP tools, Chrome fallback, and Basecamp navigation
|
|
37
|
+
- See `github.md` for GitHub issue creation and cross-linking
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Basecamp 2 Reference
|
|
2
|
+
|
|
3
|
+
IMPORTANT: YOU MUST NOT create, edit, or delete anything in Basecamp — except reassigning todos via `assign_todo`.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
Credentials stored at `~/.simpleapps/basecamp.json`. If missing, ask the user to run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uv run basecamp-auth
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This opens the browser for OAuth, user clicks "Allow", credentials are saved automatically.
|
|
14
|
+
|
|
15
|
+
## MCP Tools (Preferred)
|
|
16
|
+
|
|
17
|
+
The `basecamp` MCP server is bundled with this plugin and starts automatically. API reference: https://github.com/basecamp/bcx-api
|
|
18
|
+
|
|
19
|
+
### Projects
|
|
20
|
+
| Tool | Description |
|
|
21
|
+
|------|-------------|
|
|
22
|
+
| `list_projects` | List projects. status: 'active', 'drafts', or 'archived' |
|
|
23
|
+
| `get_project` | Get project details by project_id |
|
|
24
|
+
|
|
25
|
+
### People
|
|
26
|
+
| Tool | Description |
|
|
27
|
+
|------|-------------|
|
|
28
|
+
| `list_people` | List all people on the account |
|
|
29
|
+
| `get_person` | Get person details by person_id |
|
|
30
|
+
| `get_me` | Get the authenticated user's profile |
|
|
31
|
+
|
|
32
|
+
### Todos
|
|
33
|
+
| Tool | Description |
|
|
34
|
+
|------|-------------|
|
|
35
|
+
| `get_todo` | Get a single todo with comments (project_id, todo_id) |
|
|
36
|
+
| `list_todos` | List todos in a project. status: 'remaining', 'completed', or 'all' |
|
|
37
|
+
| `list_todos_due_since` | List todos due after a date (YYYY-MM-DD) |
|
|
38
|
+
| `list_my_todos` | List all open todos assigned to the current user (paginated) |
|
|
39
|
+
| `list_assigned_todos` | List open todos assigned to any person_id |
|
|
40
|
+
| `assign_todo` | Reassign a todo to a different person_id |
|
|
41
|
+
|
|
42
|
+
### Todo Lists
|
|
43
|
+
| Tool | Description |
|
|
44
|
+
|------|-------------|
|
|
45
|
+
| `list_todolists` | List active todo lists in a project |
|
|
46
|
+
| `list_all_todolists` | List todo lists across all projects. status: 'active', 'completed', or 'trashed' |
|
|
47
|
+
| `get_todolist` | Get all todos in a specific todo list |
|
|
48
|
+
|
|
49
|
+
### Messages
|
|
50
|
+
| Tool | Description |
|
|
51
|
+
|------|-------------|
|
|
52
|
+
| `list_messages` | List messages in a project |
|
|
53
|
+
| `get_message` | Get a message with comments |
|
|
54
|
+
|
|
55
|
+
Note: Messages may not be available on all Basecamp plans.
|
|
56
|
+
|
|
57
|
+
### Documents
|
|
58
|
+
| Tool | Description |
|
|
59
|
+
|------|-------------|
|
|
60
|
+
| `list_documents` | List documents. project_id=0 for all projects |
|
|
61
|
+
| `get_document` | Get a single document (e.g., site-info) |
|
|
62
|
+
|
|
63
|
+
### Calendar Events
|
|
64
|
+
| Tool | Description |
|
|
65
|
+
|------|-------------|
|
|
66
|
+
| `list_calendars` | List all calendars |
|
|
67
|
+
| `list_calendar_events` | List events. Filter by project_id, start_date, end_date, past |
|
|
68
|
+
| `get_calendar_event` | Get a specific calendar event |
|
|
69
|
+
|
|
70
|
+
### Topics, Events, Attachments
|
|
71
|
+
| Tool | Description |
|
|
72
|
+
|------|-------------|
|
|
73
|
+
| `list_topics` | List topics. project_id=0 for all. archived=True for archived |
|
|
74
|
+
| `list_events` | Activity log since a datetime. Filter by project_id or person_id |
|
|
75
|
+
| `list_attachments` | List attachments. project_id=0 for all (paginated) |
|
|
76
|
+
| `get_upload` | Get an upload with comments |
|
|
77
|
+
|
|
78
|
+
### Other
|
|
79
|
+
| Tool | Description |
|
|
80
|
+
|------|-------------|
|
|
81
|
+
| `list_accesses` | List people with access to a project |
|
|
82
|
+
| `list_stars` | List starred/favorite projects |
|
|
83
|
+
| `list_forwards` | List email forwards. project_id=0 for all |
|
|
84
|
+
| `get_forward` | Get a specific email forward with comments |
|
|
85
|
+
| `search` | Search across all projects |
|
|
86
|
+
|
|
87
|
+
**Extracting IDs from Basecamp URLs**: A URL like `https://basecamp.com/2805226/projects/18932786/todos/514631271` gives you project_id=`18932786` and todo_id=`514631271`.
|
|
88
|
+
|
|
89
|
+
## Chrome Fallback
|
|
90
|
+
|
|
91
|
+
If the MCP server is unavailable (credentials expired, server not running), use Chrome:
|
|
92
|
+
|
|
93
|
+
1. Use `tabs_context_mcp` to get current tabs
|
|
94
|
+
2. Create a new tab or use an existing Basecamp tab
|
|
95
|
+
3. Navigate to the Basecamp page
|
|
96
|
+
4. Use `get_page_text` to extract content
|
|
97
|
+
|
|
98
|
+
**Base URL**: `https://basecamp.com/2805226`
|
|
99
|
+
|
|
100
|
+
**Top nav**: Projects | Calendar | Everything | Progress | Everyone | **Me**
|
|
101
|
+
|
|
102
|
+
| Page | Path |
|
|
103
|
+
|------|------|
|
|
104
|
+
| Dashboard | `/` |
|
|
105
|
+
| All projects | `/projects` |
|
|
106
|
+
| My assignments | click "Me" in top nav |
|
|
107
|
+
| Project overview | `/projects/<project_id>` |
|
|
108
|
+
| Todo lists | `/projects/<project_id>/todolists` |
|
|
109
|
+
| Documents | `/projects/<project_id>/documents` |
|
|
110
|
+
|
|
111
|
+
**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`.
|
|
112
|
+
|
|
113
|
+
**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.
|
|
114
|
+
|
|
115
|
+
## Site Info Documents
|
|
116
|
+
|
|
117
|
+
Each Basecamp project SHOULD have a **site-info** text document in its Documents section. It contains site-specific details like siteId and domain name needed for GitHub issues and development work. Use `list_documents` + `get_document` to find it. If no site-info document exists, ask the user to create one.
|
|
118
|
+
|
|
119
|
+
## Tips
|
|
120
|
+
|
|
121
|
+
- Cache the user's `person_id` on first visit for the session
|
|
122
|
+
- Start from `list_my_todos` for "what do I need to work on?"
|
|
123
|
+
- Use `list_people` to find person_id before calling `assign_todo`
|
|
124
|
+
- If you get a 401 or auth error, ask the user to re-run `basecamp-auth`
|
|
125
|
+
- If an endpoint returns 404, the feature may not be available on this Basecamp plan
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# GitHub Issues Reference
|
|
2
|
+
|
|
3
|
+
## Creating Issues from Basecamp Todos
|
|
4
|
+
|
|
5
|
+
Before creating an issue, gather context:
|
|
6
|
+
1. Use `get_todo` (MCP) to read the Basecamp todo and summarize the client request
|
|
7
|
+
2. Use `list_documents` + `get_document` (MCP) to find the project's **site-info** document for siteId and domain name. If no site-info document exists, ask the user to create one in Basecamp.
|
|
8
|
+
|
|
9
|
+
Use `gh issue create` to create issues linked to Basecamp todos:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
gh issue create --repo simpleapps-com/<repo> \
|
|
13
|
+
--title "<brief technical title>" \
|
|
14
|
+
--body "## Basecamp
|
|
15
|
+
<basecamp_todo_url>
|
|
16
|
+
|
|
17
|
+
## Client
|
|
18
|
+
<client/project name> — <domain> (siteId: <siteId>)
|
|
19
|
+
|
|
20
|
+
## Summary
|
|
21
|
+
<technical summary of what needs to be done>
|
|
22
|
+
|
|
23
|
+
## Acceptance Criteria
|
|
24
|
+
- [ ] <criteria from the Basecamp request>"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Cross-Linking
|
|
28
|
+
|
|
29
|
+
- Include the Basecamp todo URL in the GitHub issue body (under a `## Basecamp` heading)
|
|
30
|
+
- After creating the issue, provide the GitHub issue URL to the user so they can add it to the Basecamp todo comments
|
|
31
|
+
|
|
32
|
+
## Conventions
|
|
33
|
+
|
|
34
|
+
- YOU MUST ALWAYS ask the user which GitHub repo to create the issue in — it could be the client site repo, the augur repo, or any other repo in the org
|
|
35
|
+
- Issue title SHOULD be a technical description, not the client's words
|
|
36
|
+
- Reference the Basecamp todo as the source of the request
|
|
37
|
+
- Use labels to categorize (bug, feature, enhancement)
|
|
38
|
+
- Assign to the appropriate developer
|
|
39
|
+
|
|
40
|
+
## Useful Commands
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
gh issue list --repo simpleapps-com/<repo> # List open issues
|
|
44
|
+
gh issue view <number> --repo simpleapps-com/<repo> # View issue details
|
|
45
|
+
gh issue create --repo simpleapps-com/<repo> # Create new issue
|
|
46
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: writing-style
|
|
3
|
+
description: Writing standards for code comments, documentation, specs, PRDs, and team communication. Applies RFC 2119 requirement language and token-efficient writing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Writing Style
|
|
7
|
+
|
|
8
|
+
Apply these standards to all written output: code comments, docs, specs, PRDs, wiki pages, commit messages, and team communication.
|
|
9
|
+
|
|
10
|
+
## RFC 2119 Requirement Language
|
|
11
|
+
|
|
12
|
+
Spec: https://www.rfc-editor.org/rfc/rfc2119
|
|
13
|
+
|
|
14
|
+
Use ALL CAPS when invoking requirement levels:
|
|
15
|
+
|
|
16
|
+
- **MUST / REQUIRED / SHALL** — absolute requirement, no exceptions
|
|
17
|
+
- **MUST NOT / SHALL NOT** — absolute prohibition
|
|
18
|
+
- **SHOULD / RECOMMENDED** — strong recommendation, exceptions need justification
|
|
19
|
+
- **SHOULD NOT / NOT RECOMMENDED** — discouraged, acceptable with careful reasoning
|
|
20
|
+
- **MAY / OPTIONAL** — truly optional, implementer's choice
|
|
21
|
+
|
|
22
|
+
Use lowercase for casual suggestions: "you should consider..." vs "you SHOULD implement..."
|
|
23
|
+
|
|
24
|
+
Decision framework: Does the system break without it? → MUST. Degrades? → SHOULD. No impact? → MAY.
|
|
25
|
+
|
|
26
|
+
In CLAUDE.md and skill instructions, use "YOU MUST" or "IMPORTANT" as emphasis markers to improve adherence to critical rules.
|
|
27
|
+
|
|
28
|
+
## Token Efficiency
|
|
29
|
+
|
|
30
|
+
Every token costs time, money, and cognitive load. Be concise without losing clarity.
|
|
31
|
+
|
|
32
|
+
**Rules:**
|
|
33
|
+
1. Start with action verbs: fix, add, update, remove
|
|
34
|
+
2. Use file:line references: `auth.ts:45` not "authentication file line 45"
|
|
35
|
+
3. Eliminate filler: actually, basically, in order to, it's worth noting
|
|
36
|
+
4. Choose specific over generic: "Redis cache" not "caching solution"
|
|
37
|
+
5. Bottom Line Up Front — lead with the answer, then context
|
|
38
|
+
|
|
39
|
+
**By audience:**
|
|
40
|
+
- **Client-facing (Basecamp)**: Plain language, no jargon, explain impact not implementation. The reader is non-technical — write for clarity over brevity.
|
|
41
|
+
- **Developer-facing (GitHub issues, PRs, wiki)**: Technical and concise. Convey context for developers and AI agents — include file references, reproduction steps, and acceptance criteria.
|
|
42
|
+
- **Internal (code comments, commits)**: Minimal. Reader has full codebase context.
|
|
43
|
+
|
|
44
|
+
**By format:**
|
|
45
|
+
- **PRDs**: Bullet points, not paragraphs
|
|
46
|
+
- **Specs**: Lead with requirements (MUST/SHOULD/MAY)
|
|
47
|
+
- **Tasks**: Action verb + target
|
|
48
|
+
- **Code comments**: Only where logic isn't self-evident
|
|
49
|
+
- **Reviews**: What changed, not why
|
|
50
|
+
|
|
51
|
+
**When to expand:**
|
|
52
|
+
- User stories, onboarding docs, error messages — reader has no prior context
|
|
53
|
+
- Architecture decisions — future developers need the "why"
|
|
54
|
+
- External-facing docs — audience can't ask follow-up questions
|
|
55
|
+
|
|
56
|
+
**When to cut:**
|
|
57
|
+
- Internal specs, tasks, code comments — reader has shared context
|
|
58
|
+
- Commit messages, PR titles — scanning speed matters
|
|
59
|
+
- Anything repeating what the code already says
|
|
60
|
+
|
|
61
|
+
Default to brief. Expand only when the reader cannot infer meaning from context. Two sentences that answer the question beat two pages that fill the context window.
|
|
62
|
+
|
|
63
|
+
## Claude Code Keywords
|
|
64
|
+
|
|
65
|
+
Thinking trigger words (`think`, `think hard`, `ultrathink`) are deprecated. Extended thinking is on by default. Use `/effort` (low/medium/high/max) for control.
|