panopticon-cli 0.4.6 → 0.4.7
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 +2 -1
- package/skills/beads/README.md +120 -0
- package/skills/beads/SKILL.md +214 -0
- package/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +59 -0
- package/skills/beads/resources/AGENTS.md +62 -0
- package/skills/beads/resources/ASYNC_GATES.md +168 -0
- package/skills/beads/resources/BOUNDARIES.md +469 -0
- package/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
- package/skills/beads/resources/CLI_REFERENCE.md +558 -0
- package/skills/beads/resources/DEPENDENCIES.md +747 -0
- package/skills/beads/resources/INTEGRATION_PATTERNS.md +407 -0
- package/skills/beads/resources/ISSUE_CREATION.md +139 -0
- package/skills/beads/resources/MOLECULES.md +354 -0
- package/skills/beads/resources/PATTERNS.md +341 -0
- package/skills/beads/resources/RESUMABILITY.md +207 -0
- package/skills/beads/resources/STATIC_DATA.md +54 -0
- package/skills/beads/resources/TROUBLESHOOTING.md +489 -0
- package/skills/beads/resources/WORKFLOWS.md +623 -0
- package/skills/beads/resources/WORKTREES.md +94 -0
- package/skills/beads-completion-check/SKILL.md +90 -0
- package/skills/beads-panopticon-guide/SKILL.md +171 -0
- package/skills/bug-fix/SKILL.md +32 -0
- package/skills/clear-writing/SKILL.md +105 -0
- package/skills/clear-writing/references/elements-of-style/01-introductory.md +3 -0
- package/skills/clear-writing/references/elements-of-style/02-elementary-rules-of-usage.md +214 -0
- package/skills/clear-writing/references/elements-of-style/03-elementary-principles-of-composition.md +398 -0
- package/skills/clear-writing/references/elements-of-style/04-a-few-matters-of-form.md +89 -0
- package/skills/clear-writing/references/elements-of-style/05-words-and-expressions-commonly-misused.md +342 -0
- package/skills/clear-writing/references/signs-of-ai-writing.md +901 -0
- package/skills/code-review/SKILL.md +37 -0
- package/skills/code-review-performance/SKILL.md +53 -0
- package/skills/code-review-security/SKILL.md +35 -0
- package/skills/dependency-update/SKILL.md +30 -0
- package/skills/feature-work/SKILL.md +39 -0
- package/skills/incident-response/SKILL.md +32 -0
- package/skills/knowledge-capture/SKILL.md +463 -0
- package/skills/onboard-codebase/SKILL.md +34 -0
- package/skills/opus-plan/SKILL.md +400 -0
- package/skills/pan-approve/SKILL.md +136 -0
- package/skills/pan-code-review/SKILL.md +249 -0
- package/skills/pan-config/SKILL.md +164 -0
- package/skills/pan-convoy-synthesis/SKILL.md +249 -0
- package/skills/pan-diagnose/SKILL.md +360 -0
- package/skills/pan-docker/SKILL.md +279 -0
- package/skills/pan-docs/SKILL.md +113 -0
- package/skills/pan-down/SKILL.md +434 -0
- package/skills/pan-health/SKILL.md +240 -0
- package/skills/pan-help/SKILL.md +237 -0
- package/skills/pan-install/SKILL.md +339 -0
- package/skills/pan-issue/SKILL.md +596 -0
- package/skills/pan-kill/SKILL.md +172 -0
- package/skills/pan-logs/SKILL.md +255 -0
- package/skills/pan-network/SKILL.md +320 -0
- package/skills/pan-oversee/SKILL.md +290 -0
- package/skills/pan-plan/SKILL.md +521 -0
- package/skills/pan-projects/SKILL.md +239 -0
- package/skills/pan-quickstart/SKILL.md +440 -0
- package/skills/pan-reload/SKILL.md +44 -0
- package/skills/pan-rescue/SKILL.md +271 -0
- package/skills/pan-restart/SKILL.md +53 -0
- package/skills/pan-setup/SKILL.md +478 -0
- package/skills/pan-skill-creator/SKILL.md +168 -0
- package/skills/pan-skill-creator/references/output-patterns.md +141 -0
- package/skills/pan-skill-creator/references/workflows.md +90 -0
- package/skills/pan-skill-creator/scripts/init_skill.py +176 -0
- package/skills/pan-status/SKILL.md +493 -0
- package/skills/pan-subagent-creator/SKILL.md +295 -0
- package/skills/pan-subagent-creator/assets/validate-readonly-query.sh +35 -0
- package/skills/pan-subagent-creator/references/example-agents.md +308 -0
- package/skills/pan-subagent-creator/scripts/init_agent.py +126 -0
- package/skills/pan-sync/SKILL.md +272 -0
- package/skills/pan-tell/SKILL.md +157 -0
- package/skills/pan-test-config/SKILL.md +208 -0
- package/skills/pan-tracker/SKILL.md +288 -0
- package/skills/pan-up/SKILL.md +458 -0
- package/skills/pan-workspace-config/SKILL.md +303 -0
- package/skills/refactor/SKILL.md +30 -0
- package/skills/refactor-radar/SKILL.md +475 -0
- package/skills/release/SKILL.md +25 -0
- package/skills/send-feedback-to-agent/SKILL.md +98 -0
- package/skills/session-health/SKILL.md +76 -0
- package/skills/session-health/scripts/check_sessions.py +166 -0
- package/skills/skill-creator/SKILL.md +92 -0
- package/skills/skill-creator/scripts/init_skill.py +152 -0
- package/skills/skill-creator/scripts/package_skill.py +123 -0
- package/skills/stitch-design-md/README.md +34 -0
- package/skills/stitch-design-md/SKILL.md +172 -0
- package/skills/stitch-design-md/examples/DESIGN.md +154 -0
- package/skills/stitch-react-components/README.md +36 -0
- package/skills/stitch-react-components/SKILL.md +47 -0
- package/skills/stitch-react-components/examples/gold-standard-card.tsx +80 -0
- package/skills/stitch-react-components/package-lock.json +231 -0
- package/skills/stitch-react-components/package.json +16 -0
- package/skills/stitch-react-components/resources/architecture-checklist.md +15 -0
- package/skills/stitch-react-components/resources/component-template.tsx +37 -0
- package/skills/stitch-react-components/resources/stitch-api-reference.md +14 -0
- package/skills/stitch-react-components/resources/style-guide.json +27 -0
- package/skills/stitch-react-components/scripts/fetch-stitch.sh +30 -0
- package/skills/stitch-react-components/scripts/validate.js +68 -0
- package/skills/stitch-setup/SKILL.md +94 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/skills/work-complete/SKILL.md +79 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: beads-completion-check
|
|
3
|
+
description: >
|
|
4
|
+
Verify all beads (tasks) in a workspace are closed before review completion.
|
|
5
|
+
Use as final check in code review workflow. Returns PASS if no open beads,
|
|
6
|
+
BLOCKED if open beads found. Triggers on "check beads", "verify tasks complete",
|
|
7
|
+
"beads status", or as subagent in review workflow.
|
|
8
|
+
tools: Bash(bd:*), Read
|
|
9
|
+
model: haiku
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Beads Completion Check
|
|
13
|
+
|
|
14
|
+
Verify all beads (tracked tasks) in a workspace are closed before declaring work complete.
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
|
|
18
|
+
Agents often create beads to track sub-tasks during implementation. These must all be closed before the work can be considered complete. This check prevents:
|
|
19
|
+
- Incomplete work being merged
|
|
20
|
+
- Forgotten sub-tasks
|
|
21
|
+
- Lost context about remaining work
|
|
22
|
+
|
|
23
|
+
## When to Use
|
|
24
|
+
|
|
25
|
+
- **Review workflow**: Final check before approving PR
|
|
26
|
+
- **Work completion**: Before invoking `/work-complete`
|
|
27
|
+
- **Handoff**: Before passing to test-agent or merge-agent
|
|
28
|
+
|
|
29
|
+
## Execution
|
|
30
|
+
|
|
31
|
+
Run this check in the workspace being reviewed:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Check for open beads
|
|
35
|
+
bd list --status open --json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Result Interpretation
|
|
39
|
+
|
|
40
|
+
### PASS - No Open Beads
|
|
41
|
+
```
|
|
42
|
+
BEADS CHECK: PASS
|
|
43
|
+
No open beads found in workspace.
|
|
44
|
+
Work tracking is complete.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### BLOCKED - Open Beads Found
|
|
48
|
+
```
|
|
49
|
+
BEADS CHECK: BLOCKED
|
|
50
|
+
|
|
51
|
+
Found N open bead(s) that must be resolved:
|
|
52
|
+
|
|
53
|
+
| ID | Title | Priority | Status |
|
|
54
|
+
|----|-------|----------|--------|
|
|
55
|
+
| pan-123 | Implement feature X | P2 | open |
|
|
56
|
+
| pan-124 | Add tests for Y | P3 | in_progress |
|
|
57
|
+
|
|
58
|
+
ACTION REQUIRED:
|
|
59
|
+
1. Close completed beads: bd close <id> --reason "Completed"
|
|
60
|
+
2. Or document why they should remain open
|
|
61
|
+
3. Re-run review after resolution
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Integration with Review Agent
|
|
65
|
+
|
|
66
|
+
The review-agent should invoke this as a final check:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Task(subagent_type='beads-completion-check', prompt='Check if all beads are closed in workspace: /path/to/workspace')
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If this check fails, the review should be BLOCKED until beads are resolved.
|
|
73
|
+
|
|
74
|
+
## Output Format
|
|
75
|
+
|
|
76
|
+
Return a structured result:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"status": "PASS" | "BLOCKED",
|
|
81
|
+
"openBeads": [],
|
|
82
|
+
"message": "Human-readable summary"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Error Handling
|
|
87
|
+
|
|
88
|
+
- If `bd` command not found: WARN but don't fail (beads may not be used)
|
|
89
|
+
- If `.beads/` directory doesn't exist: PASS (no beads tracking in this workspace)
|
|
90
|
+
- If bd returns error: Report error, don't fail review
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: beads-panopticon-guide
|
|
3
|
+
description: >
|
|
4
|
+
Panopticon-specific beads usage patterns. Covers common mistakes agents make
|
|
5
|
+
when filtering beads by issue number (PAN-XXX) and working with Linear-synced beads.
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
allowed-tools: "Read,Bash(bd:*)"
|
|
8
|
+
triggers:
|
|
9
|
+
- "bd list"
|
|
10
|
+
- "find beads"
|
|
11
|
+
- "filter by issue"
|
|
12
|
+
- "PAN-"
|
|
13
|
+
- "panopticon-"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Beads Quick Reference for Panopticon Agents
|
|
17
|
+
|
|
18
|
+
**Context:** Panopticon uses beads to track tasks for Linear issues (PAN-XXX). Each Linear issue spawns multiple bead tasks with IDs like `panopticon-abc`.
|
|
19
|
+
|
|
20
|
+
## ⚠️ Common Mistakes
|
|
21
|
+
|
|
22
|
+
### ❌ WRONG: Using `--issue` flag
|
|
23
|
+
```bash
|
|
24
|
+
bd list --issue PAN-116
|
|
25
|
+
# Error: unknown flag: --issue
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### ✅ CORRECT: Filter by title or label
|
|
29
|
+
```bash
|
|
30
|
+
# Option 1: Search in title (most common)
|
|
31
|
+
bd list --title-contains "PAN-116" --all
|
|
32
|
+
|
|
33
|
+
# Option 2: Filter by label (if issues are labeled)
|
|
34
|
+
bd list --label PAN-116
|
|
35
|
+
|
|
36
|
+
# Option 3: Search full text
|
|
37
|
+
bd search "PAN-116"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Finding Beads for a Panopticon Issue
|
|
41
|
+
|
|
42
|
+
**Pattern:** Linear issue `PAN-XXX` → Multiple beads `panopticon-{random}`
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Find ALL beads for PAN-116 (including closed)
|
|
46
|
+
bd list --title-contains "PAN-116" --all
|
|
47
|
+
|
|
48
|
+
# Find OPEN beads for PAN-116
|
|
49
|
+
bd list --title-contains "PAN-116" --status open
|
|
50
|
+
|
|
51
|
+
# Get details about a specific bead
|
|
52
|
+
bd show panopticon-abc
|
|
53
|
+
|
|
54
|
+
# Find unblocked work for PAN-116
|
|
55
|
+
bd ready | grep -i "PAN-116"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Common Filters
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# By status
|
|
62
|
+
bd list --status open
|
|
63
|
+
bd list --status in_progress
|
|
64
|
+
bd list --status closed
|
|
65
|
+
|
|
66
|
+
# By priority
|
|
67
|
+
bd list --priority 1 # P1 only
|
|
68
|
+
bd list --priority-min 0 --priority-max 1 # P0-P1
|
|
69
|
+
|
|
70
|
+
# By assignee
|
|
71
|
+
bd list --assignee "Claude"
|
|
72
|
+
bd list --no-assignee # Unassigned
|
|
73
|
+
|
|
74
|
+
# Multiple filters
|
|
75
|
+
bd list --title-contains "PAN-116" --status open --priority 1
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Working With Beads
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Start work on a bead
|
|
82
|
+
bd update panopticon-abc --status in_progress
|
|
83
|
+
|
|
84
|
+
# Add progress notes (CRITICAL for crash recovery)
|
|
85
|
+
bd comments add panopticon-abc "Implemented parseClaudeSession refactor"
|
|
86
|
+
|
|
87
|
+
# Complete a bead
|
|
88
|
+
bd close panopticon-abc --reason "Per-message costing implemented"
|
|
89
|
+
|
|
90
|
+
# Check dependencies
|
|
91
|
+
bd dep tree panopticon-abc
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Bead ID vs Issue ID
|
|
95
|
+
|
|
96
|
+
| Type | Example | Where Used |
|
|
97
|
+
|------|---------|------------|
|
|
98
|
+
| **Linear Issue ID** | `PAN-116` | GitHub issues, titles, labels |
|
|
99
|
+
| **Bead ID** | `panopticon-abc` | bd commands (`bd show`, `bd update`) |
|
|
100
|
+
|
|
101
|
+
**Key insight:** `bd list --id` expects bead IDs, not Linear IDs.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# ❌ WRONG
|
|
105
|
+
bd list --id PAN-116
|
|
106
|
+
|
|
107
|
+
# ✅ CORRECT
|
|
108
|
+
bd list --id panopticon-abc,panopticon-xyz
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Quick Cheat Sheet
|
|
112
|
+
|
|
113
|
+
| Task | Command |
|
|
114
|
+
|------|---------|
|
|
115
|
+
| Find beads for issue | `bd list --title-contains "PAN-XXX" --all` |
|
|
116
|
+
| Find open work | `bd ready` or `bd list --status open` |
|
|
117
|
+
| Start a bead | `bd update <bead-id> --status in_progress` |
|
|
118
|
+
| Add notes | `bd comments add <bead-id> "notes"` |
|
|
119
|
+
| Complete bead | `bd close <bead-id> --reason "done"` |
|
|
120
|
+
| Show bead details | `bd show <bead-id>` |
|
|
121
|
+
|
|
122
|
+
## When to Use Each Filter
|
|
123
|
+
|
|
124
|
+
| Use Case | Filter Flag | Example |
|
|
125
|
+
|----------|-------------|---------|
|
|
126
|
+
| Search by Linear issue number | `--title-contains` | `--title-contains "PAN-116"` |
|
|
127
|
+
| Filter by specific bead IDs | `--id` | `--id panopticon-abc,panopticon-xyz` |
|
|
128
|
+
| Filter by label | `--label` | `--label PAN-116` (if labeled) |
|
|
129
|
+
| Full text search | Use `bd search` | `bd search "PAN-116"` |
|
|
130
|
+
|
|
131
|
+
## Resource Files
|
|
132
|
+
|
|
133
|
+
For complete beads documentation, see the main `beads` skill:
|
|
134
|
+
- `/beads/SKILL.md` - Core beads reference
|
|
135
|
+
- `/beads/resources/CLI_REFERENCE.md` - Complete command syntax
|
|
136
|
+
- `/beads/resources/PATTERNS.md` - Common usage patterns
|
|
137
|
+
|
|
138
|
+
## Remember
|
|
139
|
+
|
|
140
|
+
1. **No `--issue` flag exists** - Use `--title-contains` instead
|
|
141
|
+
2. **`--id` expects bead IDs** (panopticon-abc), not Linear IDs (PAN-116)
|
|
142
|
+
3. **Always add comments** - They survive compaction and help the next agent
|
|
143
|
+
4. **Sync at session end** - `bd sync` commits to git
|
|
144
|
+
|
|
145
|
+
## Example: Complete Workflow for PAN-116
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# 1. Find beads for this issue
|
|
149
|
+
bd list --title-contains "PAN-116" --all
|
|
150
|
+
|
|
151
|
+
# Output shows:
|
|
152
|
+
# panopticon-abc [open] - PAN-116: Refactor parseClaudeSession
|
|
153
|
+
# panopticon-xyz [open] - PAN-116: Add multi-model tests
|
|
154
|
+
|
|
155
|
+
# 2. Pick first unblocked task
|
|
156
|
+
bd show panopticon-abc
|
|
157
|
+
|
|
158
|
+
# 3. Start work
|
|
159
|
+
bd update panopticon-abc --status in_progress
|
|
160
|
+
|
|
161
|
+
# 4. Do the work...
|
|
162
|
+
|
|
163
|
+
# 5. Add progress notes
|
|
164
|
+
bd comments add panopticon-abc "Implemented per-message costing logic"
|
|
165
|
+
|
|
166
|
+
# 6. Complete
|
|
167
|
+
bd close panopticon-abc --reason "Refactored parseClaudeSession to calculate cost per-message"
|
|
168
|
+
|
|
169
|
+
# 7. Sync to git
|
|
170
|
+
bd sync
|
|
171
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bug-fix
|
|
3
|
+
description: Systematic approach to investigating and fixing bugs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Bug Fix
|
|
7
|
+
|
|
8
|
+
When fixing a bug:
|
|
9
|
+
|
|
10
|
+
## 1. Reproduce
|
|
11
|
+
- Confirm the bug exists
|
|
12
|
+
- Document exact reproduction steps
|
|
13
|
+
- Identify affected code paths
|
|
14
|
+
|
|
15
|
+
## 2. Investigate Root Cause
|
|
16
|
+
- Use debugger or logging to trace execution
|
|
17
|
+
- Don't just fix symptoms - find the ROOT CAUSE
|
|
18
|
+
- Check for similar bugs elsewhere
|
|
19
|
+
|
|
20
|
+
## 3. Implement Fix
|
|
21
|
+
- Make minimal, focused changes
|
|
22
|
+
- Don't refactor unrelated code
|
|
23
|
+
- Commit: `fix: description (ISSUE-XXX)`
|
|
24
|
+
|
|
25
|
+
## 4. Add Regression Test
|
|
26
|
+
- Write a test that WOULD HAVE caught this bug
|
|
27
|
+
- Test should fail without fix, pass with it
|
|
28
|
+
|
|
29
|
+
## 5. Verify
|
|
30
|
+
- Run full test suite
|
|
31
|
+
- Manually verify the fix
|
|
32
|
+
- Check for unintended side effects
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clear-writing
|
|
3
|
+
description: >
|
|
4
|
+
Use when writing prose humans will read—documentation, commit messages,
|
|
5
|
+
error messages, explanations, reports, or UI text. Applies proven rules
|
|
6
|
+
for clearer, stronger, more professional writing and eliminates common
|
|
7
|
+
AI writing patterns.
|
|
8
|
+
triggers:
|
|
9
|
+
- write documentation
|
|
10
|
+
- improve writing
|
|
11
|
+
- edit for clarity
|
|
12
|
+
- clear writing
|
|
13
|
+
- concise writing
|
|
14
|
+
- commit message
|
|
15
|
+
- PR description
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Clear Writing
|
|
19
|
+
|
|
20
|
+
## Overview
|
|
21
|
+
|
|
22
|
+
Write with clarity and force. This skill covers what to do (proven composition rules) and what not to do (AI writing patterns to avoid).
|
|
23
|
+
|
|
24
|
+
## When to Use This Skill
|
|
25
|
+
|
|
26
|
+
Use this skill whenever you write prose for humans:
|
|
27
|
+
|
|
28
|
+
- Documentation, README files, technical explanations
|
|
29
|
+
- Commit messages, pull request descriptions
|
|
30
|
+
- Error messages, UI copy, help text, comments
|
|
31
|
+
- Reports, summaries, or any explanation
|
|
32
|
+
- Editing to improve clarity
|
|
33
|
+
|
|
34
|
+
**If you are writing sentences for a human to read, use this skill.**
|
|
35
|
+
|
|
36
|
+
## Limited Context Strategy
|
|
37
|
+
|
|
38
|
+
When context is tight:
|
|
39
|
+
|
|
40
|
+
1. Write your draft using judgment
|
|
41
|
+
2. Dispatch a subagent with your draft and the relevant section file
|
|
42
|
+
3. Have the subagent copyedit and return the revision
|
|
43
|
+
|
|
44
|
+
Loading a single section (~1,000-4,500 tokens) instead of everything saves significant context.
|
|
45
|
+
|
|
46
|
+
## Composition Rules
|
|
47
|
+
|
|
48
|
+
These rules teach you to write clearly and cut ruthlessly.
|
|
49
|
+
|
|
50
|
+
### Rules
|
|
51
|
+
|
|
52
|
+
**Elementary Rules of Usage (Grammar/Punctuation)**:
|
|
53
|
+
|
|
54
|
+
1. Form possessive singular by adding 's
|
|
55
|
+
2. Use comma after each term in series except last
|
|
56
|
+
3. Enclose parenthetic expressions between commas
|
|
57
|
+
4. Comma before conjunction introducing co-ordinate clause
|
|
58
|
+
5. Don't join independent clauses by comma
|
|
59
|
+
6. Don't break sentences in two
|
|
60
|
+
7. Participial phrase at beginning refers to grammatical subject
|
|
61
|
+
|
|
62
|
+
**Elementary Principles of Composition**:
|
|
63
|
+
|
|
64
|
+
8. One paragraph per topic
|
|
65
|
+
9. Begin paragraph with topic sentence
|
|
66
|
+
10. **Use active voice**
|
|
67
|
+
11. **Put statements in positive form**
|
|
68
|
+
12. **Use definite, specific, concrete language**
|
|
69
|
+
13. **Omit needless words**
|
|
70
|
+
14. Avoid succession of loose sentences
|
|
71
|
+
15. Express co-ordinate ideas in similar form
|
|
72
|
+
16. **Keep related words together**
|
|
73
|
+
17. Keep to one tense in summaries
|
|
74
|
+
18. **Place emphatic words at end of sentence**
|
|
75
|
+
|
|
76
|
+
### Reference Files
|
|
77
|
+
|
|
78
|
+
The rules above are summarized from the original text. For complete explanations with examples:
|
|
79
|
+
|
|
80
|
+
| Section | File | ~Tokens |
|
|
81
|
+
|---------|------|---------|
|
|
82
|
+
| Grammar, punctuation, comma rules | `references/elements-of-style/02-elementary-rules-of-usage.md` | 2,500 |
|
|
83
|
+
| Paragraph structure, active voice, concision | `references/elements-of-style/03-elementary-principles-of-composition.md` | 4,500 |
|
|
84
|
+
| Headings, quotations, formatting | `references/elements-of-style/04-a-few-matters-of-form.md` | 1,000 |
|
|
85
|
+
| Word choice, common errors | `references/elements-of-style/05-words-and-expressions-commonly-misused.md` | 4,000 |
|
|
86
|
+
|
|
87
|
+
**Most tasks need only `03-elementary-principles-of-composition.md`** — it covers active voice, positive form, concrete language, and omitting needless words.
|
|
88
|
+
|
|
89
|
+
## AI Writing Patterns to Avoid
|
|
90
|
+
|
|
91
|
+
LLMs regress to statistical means, producing generic, puffy prose. Avoid:
|
|
92
|
+
|
|
93
|
+
- **Puffery:** pivotal, crucial, vital, testament, enduring legacy
|
|
94
|
+
- **Empty "-ing" phrases:** ensuring reliability, showcasing features, highlighting capabilities
|
|
95
|
+
- **Promotional adjectives:** groundbreaking, seamless, robust, cutting-edge
|
|
96
|
+
- **Overused AI vocabulary:** delve, leverage, multifaceted, foster, realm, tapestry
|
|
97
|
+
- **Formatting overuse:** excessive bullets, emoji decorations, bold on every other word
|
|
98
|
+
|
|
99
|
+
Be specific, not grandiose. Say what it actually does.
|
|
100
|
+
|
|
101
|
+
For comprehensive research on why these patterns occur, see `references/signs-of-ai-writing.md`. This guide catalogs patterns observed across thousands of instances of AI-generated text — well-documented and field-tested.
|
|
102
|
+
|
|
103
|
+
## Bottom Line
|
|
104
|
+
|
|
105
|
+
Writing for humans? Load the relevant section from `references/elements-of-style/` and apply the rules. For most tasks, `03-elementary-principles-of-composition.md` covers what matters most.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
## I. Introductory
|
|
2
|
+
|
|
3
|
+
This handbook summarizes the essentials of plain English style. It focuses on the rules of usage and principles of composition most often broken, offering a compact alternative to exhaustive manuals. Master the guidance here, then look to the best authors for finer points of style.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
## II. Elementary Rules Of Usage
|
|
2
|
+
|
|
3
|
+
### Rule 1. Form the possessive singular of nouns by adding 's.
|
|
4
|
+
|
|
5
|
+
Follow this rule whatever the final consonant. Thus write,
|
|
6
|
+
|
|
7
|
+
Charles's friend
|
|
8
|
+
|
|
9
|
+
Burns's poems
|
|
10
|
+
|
|
11
|
+
the witch's malice
|
|
12
|
+
|
|
13
|
+
This is the usage of the United States Government Printing Office and of the Oxford University Press.
|
|
14
|
+
|
|
15
|
+
Exceptions are the possessive of ancient proper names ending in *-es* and *-is*, the possessive *Jesus'*, and such forms as *for conscience' sake*, *for righteousness' sake*. But such forms as *Achilles' heel*, *Moses' laws*, *Isis' temple* are commonly replaced by
|
|
16
|
+
|
|
17
|
+
the heel of Achilles
|
|
18
|
+
|
|
19
|
+
the laws of Moses
|
|
20
|
+
|
|
21
|
+
the temple of Isis
|
|
22
|
+
|
|
23
|
+
The pronominal possessives *hers*, *its*, *theirs*, *yours*, and *oneself* have no apostrophe.
|
|
24
|
+
|
|
25
|
+
### Rule 2. In a series of three or more terms with a single conjunction, use a comma after each term except the last.
|
|
26
|
+
|
|
27
|
+
Thus write,
|
|
28
|
+
|
|
29
|
+
red, white, and blue
|
|
30
|
+
|
|
31
|
+
gold, silver, or copper
|
|
32
|
+
|
|
33
|
+
He opened the letter, read it, and made a note of its contents.
|
|
34
|
+
|
|
35
|
+
This is also the usage of the Government Printing Office and of the Oxford University Press.
|
|
36
|
+
|
|
37
|
+
In the names of business firms the last comma is omitted, as,
|
|
38
|
+
|
|
39
|
+
Brown, Shipley & Co.
|
|
40
|
+
|
|
41
|
+
### Rule 3. Enclose parenthetic expressions between commas.
|
|
42
|
+
|
|
43
|
+
The best way to see a country, unless you are pressed for time, is to travel on foot.
|
|
44
|
+
|
|
45
|
+
This rule is difficult to apply; it is frequently hard to decide whether a single word, such as *however*, or a brief phrase, is or is not parenthetic. If the interruption to the flow of the sentence is but slight, the writer may safely omit the commas. But whether the interruption be slight or considerable, he must never insert one comma and omit the other. Such punctuation as
|
|
46
|
+
|
|
47
|
+
Marjorie's husband, Colonel Nelson paid us a visit yesterday,
|
|
48
|
+
|
|
49
|
+
or
|
|
50
|
+
|
|
51
|
+
My brother you will be pleased to hear, is now in perfect health,
|
|
52
|
+
|
|
53
|
+
is indefensible.
|
|
54
|
+
|
|
55
|
+
If a parenthetic expression is preceded by a conjunction, place the first comma before the conjunction, not after it.
|
|
56
|
+
|
|
57
|
+
He saw us coming, and unaware that we had learned of his treachery, greeted us with a smile.
|
|
58
|
+
|
|
59
|
+
Always to be regarded as parenthetic and to be enclosed between commas (or, at the end of the sentence, between comma and period) are the following:
|
|
60
|
+
|
|
61
|
+
\(1\) the year, when forming part of a date, and the day of the month, when following the day of the week:
|
|
62
|
+
|
|
63
|
+
February to July, 1916.
|
|
64
|
+
|
|
65
|
+
April 6, 1917.
|
|
66
|
+
|
|
67
|
+
Monday, November 11, 1918.
|
|
68
|
+
|
|
69
|
+
\(2\) the abbreviations *etc.* and *jr.*
|
|
70
|
+
|
|
71
|
+
\(3\) non-restrictive relative clauses, that is, those which do not serve to identify or define the antecedent noun, and similar clauses introduced by conjunctions indicating time or place.
|
|
72
|
+
|
|
73
|
+
The audience, which had at first been indifferent, became more and more interested.
|
|
74
|
+
|
|
75
|
+
In this sentence the clause introduced by *which* does not serve to tell which of several possible audiences is meant; what audience is in question is supposed to be already known. The clause adds, parenthetically, a statement supplementing that in the main clause. The sentence is virtually a combination of two statements which might have been made independently:
|
|
76
|
+
|
|
77
|
+
The audience had at first been indifferent. It became more and more interested.
|
|
78
|
+
|
|
79
|
+
Compare the restrictive relative clause, not set off by commas, in the sentence,
|
|
80
|
+
|
|
81
|
+
The candidate who best meets these requirements will obtain the place.
|
|
82
|
+
|
|
83
|
+
Here the clause introduced by *who* does serve to tell which of several possible candidates is meant; the sentence cannot be split up into two independent statements.
|
|
84
|
+
|
|
85
|
+
The difference in punctuation in the two sentences following is based on the same principle:
|
|
86
|
+
|
|
87
|
+
Nether Stowey, where Coleridge wrote The Rime of the Ancient Mariner, is a few miles from Bridgewater.
|
|
88
|
+
|
|
89
|
+
The day will come when you will admit your mistake.
|
|
90
|
+
|
|
91
|
+
Nether Stowey is completely identified by its name; the statement about Coleridge is therefore supplementary and parenthetic. The *day* spoken of is identified only by the dependent clause, which is therefore restrictive.
|
|
92
|
+
|
|
93
|
+
Similar in principle to the enclosing of parenthetic expressions between commas is the setting off by commas of phrases or dependent clauses preceding or following the main clause of a sentence.
|
|
94
|
+
|
|
95
|
+
Partly by hard fighting, partly by diplomatic skill, they enlarged their dominions to the east, and rose to royal rank with the possession of Sicily, exchanged afterwards for Sardinia.
|
|
96
|
+
|
|
97
|
+
Other illustrations may be found in sentences quoted under Rules 4, 5, 6, 7, 16, and 18.
|
|
98
|
+
|
|
99
|
+
The writer should be careful not to set off independent clauses by commas: see under Rule 5.
|
|
100
|
+
|
|
101
|
+
### Rule 4. Place a comma before a conjunction introducing a co-ordinate clause.
|
|
102
|
+
|
|
103
|
+
The early records of the city have disappeared, and the story of its first years can no longer be reconstructed.
|
|
104
|
+
|
|
105
|
+
The situation is perilous, but there is still one chance of escape.
|
|
106
|
+
|
|
107
|
+
Sentences of this type, isolated from their context, may seem to be in need of rewriting. As they make complete sense when the comma is reached, the second clause has the appearance of an afterthought. Further, *and* is the least specific of connectives. Used between independent clauses, it indicates only that a relation exists between them without defining that relation. In the example above, the relation is that of cause and result. The two sentences might be rewritten:
|
|
108
|
+
|
|
109
|
+
As the early records of the city have disappeared, the story of its first years can no longer be reconstructed.
|
|
110
|
+
|
|
111
|
+
Although the situation is perilous, there is still one chance of escape.
|
|
112
|
+
|
|
113
|
+
Or the subordinate clauses might be replaced by phrases:
|
|
114
|
+
|
|
115
|
+
Owing to the disappearance of the early records of the city, the story of its first years can no longer be reconstructed.
|
|
116
|
+
|
|
117
|
+
In this perilous situation, there is still one chance of escape.
|
|
118
|
+
|
|
119
|
+
But a writer may err by making his sentences too uniformly compact and periodic, and an occasional loose sentence prevents the style from becoming too formal and gives the reader a certain relief. Consequently, loose sentences of the type first quoted are common in easy, unstudied writing. But a writer should be careful not to construct too many of his sentences after this pattern (see Rule 14).
|
|
120
|
+
|
|
121
|
+
Two-part sentences of which the second member is introduced by *as* (in the sense of *because*), *for*, *or*, *nor*, and *while* (in the sense of *and at the same time*) likewise require a comma before the conjunction.
|
|
122
|
+
|
|
123
|
+
If the second member is introduced by an adverb, a semicolon, not a comma, is required (see Rule 5). The connectives *so* and *yet* may be used either as adverbs or as conjunctions, accordingly as the second clause is felt to be co-ordinate or subordinate; consequently either mark of punctuation may be justified. But these uses of *so* (equivalent to *accordingly* or to *so that*) are somewhat colloquial and should, as a rule, be avoided in writing. A simple correction, usually serviceable, is to omit the word *so* and begin the first clause with *as* or *since*:
|
|
124
|
+
|
|
125
|
+
| Original | Revision |
|
|
126
|
+
| --- | --- |
|
|
127
|
+
| I had never been in the place before; so I had difficulty in finding my way about. | As I had never been in the place before, I had difficulty in finding my way about. |
|
|
128
|
+
|
|
129
|
+
If a dependent clause, or an introductory phrase requiring to be set off by a comma, precedes the second independent clause, no comma is needed after the conjunction.
|
|
130
|
+
|
|
131
|
+
The situation is perilous, but if we are prepared to act promptly, there is still one chance of escape.
|
|
132
|
+
|
|
133
|
+
When the subject is the same for both clauses and is expressed only once, a comma is required if the connective is *but*. If the connective is *and*, the comma should be omitted if the relation between the two statements is close or immediate.
|
|
134
|
+
|
|
135
|
+
I have heard his arguments, but am still unconvinced.
|
|
136
|
+
|
|
137
|
+
He has had several years' experience and is thoroughly competent.
|
|
138
|
+
|
|
139
|
+
### Rule 5. Do not join independent clauses by a comma.
|
|
140
|
+
|
|
141
|
+
If two or more clauses, grammatically complete and not joined by a conjunction, are to form a single compound sentence, the proper mark of punctuation is a semicolon.
|
|
142
|
+
|
|
143
|
+
Stevenson's romances are entertaining; they are full of exciting adventures.
|
|
144
|
+
|
|
145
|
+
It is nearly half past five; we cannot reach town before dark.
|
|
146
|
+
|
|
147
|
+
It is of course equally correct to write the above as two sentences each, replacing the semicolons by periods.
|
|
148
|
+
|
|
149
|
+
Stevenson's romances are entertaining. They are full of exciting adventures.
|
|
150
|
+
|
|
151
|
+
It is nearly half past five. We cannot reach town before dark.
|
|
152
|
+
|
|
153
|
+
If a conjunction is inserted the proper mark is a comma (Rule 4).
|
|
154
|
+
|
|
155
|
+
Stevenson's romances are entertaining, for they are full of exciting adventures.
|
|
156
|
+
|
|
157
|
+
It is nearly half past five, and we cannot reach town before dark.
|
|
158
|
+
|
|
159
|
+
A comparison of the three forms given above will show clearly the advantage of the first. It is, at least in the examples given, better than the second form, because it suggests the close relationship between the two statements in a way that the second does not attempt, and better than the third, because briefer and therefore more forcible. Indeed it may be said that this simple method of indicating relationship between statements is one of the most useful devices of composition. The relationship, as above, is commonly one of cause or of consequence.
|
|
160
|
+
|
|
161
|
+
Note that if the second clause is preceded by an adverb, such as *accordingly*, *besides*, *then*, *therefore*, or *thus*, and not by a conjunction, the semicolon is still required.
|
|
162
|
+
|
|
163
|
+
Two exceptions to the rule may be admitted. If the clauses are very short, and are alike in form, a comma is usually permissible:
|
|
164
|
+
|
|
165
|
+
Man proposes, God disposes.
|
|
166
|
+
|
|
167
|
+
The gate swung apart, the bridge fell, the portcullis was drawn up.
|
|
168
|
+
|
|
169
|
+
Note that in these examples the relation is not one of cause or consequence. Also in the colloquial form of expression,
|
|
170
|
+
|
|
171
|
+
I hardly knew him, he was so changed,
|
|
172
|
+
|
|
173
|
+
a comma, not a semicolon, is required. But this form of expression is inappropriate in writing, except in the dialogue of a story or play, or perhaps in a familiar letter.
|
|
174
|
+
|
|
175
|
+
### Rule 6. Do not break sentences in two.
|
|
176
|
+
|
|
177
|
+
In other words, do not use periods for commas.
|
|
178
|
+
|
|
179
|
+
I met them on a Cunard liner several years ago. Coming home from Liverpool to New York.
|
|
180
|
+
|
|
181
|
+
He was an interesting talker. A man who had traveled all over the world and lived in half a dozen countries.
|
|
182
|
+
|
|
183
|
+
In both these examples, the first period should be replaced by a comma, and the following word begun with a small letter.
|
|
184
|
+
|
|
185
|
+
It is permissible to make an emphatic word or expression serve the purpose of a sentence and to punctuate it accordingly:
|
|
186
|
+
|
|
187
|
+
Again and again he called out. No reply.
|
|
188
|
+
|
|
189
|
+
The writer must, however, be certain that the emphasis is warranted, and that he will not be suspected of a mere blunder in syntax or in punctuation.
|
|
190
|
+
|
|
191
|
+
Rules 3, 4, 5, and 6 cover the most important principles in the punctuation of ordinary sentences; they should be so thoroughly mastered that their application becomes second nature.
|
|
192
|
+
|
|
193
|
+
### Rule 7. A participial phrase at the beginning of a sentence must refer to the grammatical subject.
|
|
194
|
+
|
|
195
|
+
Walking slowly down the road, he saw a woman accompanied by two children.
|
|
196
|
+
|
|
197
|
+
The word *walking* refers to the subject of the sentence, not to the woman. If the writer wishes to make it refer to the woman, he must recast the sentence:
|
|
198
|
+
|
|
199
|
+
He saw a woman accompanied by two children, walking slowly down the road.
|
|
200
|
+
|
|
201
|
+
Participial phrases preceded by a conjunction or by a preposition, nouns in apposition, adjectives, and adjective phrases come under the same rule if they begin the sentence.
|
|
202
|
+
|
|
203
|
+
| Original | Revision |
|
|
204
|
+
| --- | --- |
|
|
205
|
+
| On arriving in Chicago, his friends met him at the station. | When he arrived (or, On his arrival) in Chicago, his friends met him at the station. |
|
|
206
|
+
| A soldier of proved valor, they entrusted him with the defence of the city. | A soldier of proved valor, he was entrusted with the defence of the city. |
|
|
207
|
+
| Young and inexperienced, the task seemed easy to me. | Young and inexperienced, I thought the task easy. |
|
|
208
|
+
| Without a friend to counsel him, the temptation proved irresistible. | Without a friend to counsel him, he found the temptation irresistible. |
|
|
209
|
+
|
|
210
|
+
Sentences violating this rule are often ludicrous.
|
|
211
|
+
|
|
212
|
+
Being in a dilapidated condition, I was able to buy the house very cheap.
|
|
213
|
+
|
|
214
|
+
Wondering irresolutely what to do next, the clock struck twelve.
|