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.
Files changed (102) hide show
  1. package/package.json +2 -1
  2. package/skills/beads/README.md +120 -0
  3. package/skills/beads/SKILL.md +214 -0
  4. package/skills/beads/adr/0001-bd-prime-as-source-of-truth.md +59 -0
  5. package/skills/beads/resources/AGENTS.md +62 -0
  6. package/skills/beads/resources/ASYNC_GATES.md +168 -0
  7. package/skills/beads/resources/BOUNDARIES.md +469 -0
  8. package/skills/beads/resources/CHEMISTRY_PATTERNS.md +197 -0
  9. package/skills/beads/resources/CLI_REFERENCE.md +558 -0
  10. package/skills/beads/resources/DEPENDENCIES.md +747 -0
  11. package/skills/beads/resources/INTEGRATION_PATTERNS.md +407 -0
  12. package/skills/beads/resources/ISSUE_CREATION.md +139 -0
  13. package/skills/beads/resources/MOLECULES.md +354 -0
  14. package/skills/beads/resources/PATTERNS.md +341 -0
  15. package/skills/beads/resources/RESUMABILITY.md +207 -0
  16. package/skills/beads/resources/STATIC_DATA.md +54 -0
  17. package/skills/beads/resources/TROUBLESHOOTING.md +489 -0
  18. package/skills/beads/resources/WORKFLOWS.md +623 -0
  19. package/skills/beads/resources/WORKTREES.md +94 -0
  20. package/skills/beads-completion-check/SKILL.md +90 -0
  21. package/skills/beads-panopticon-guide/SKILL.md +171 -0
  22. package/skills/bug-fix/SKILL.md +32 -0
  23. package/skills/clear-writing/SKILL.md +105 -0
  24. package/skills/clear-writing/references/elements-of-style/01-introductory.md +3 -0
  25. package/skills/clear-writing/references/elements-of-style/02-elementary-rules-of-usage.md +214 -0
  26. package/skills/clear-writing/references/elements-of-style/03-elementary-principles-of-composition.md +398 -0
  27. package/skills/clear-writing/references/elements-of-style/04-a-few-matters-of-form.md +89 -0
  28. package/skills/clear-writing/references/elements-of-style/05-words-and-expressions-commonly-misused.md +342 -0
  29. package/skills/clear-writing/references/signs-of-ai-writing.md +901 -0
  30. package/skills/code-review/SKILL.md +37 -0
  31. package/skills/code-review-performance/SKILL.md +53 -0
  32. package/skills/code-review-security/SKILL.md +35 -0
  33. package/skills/dependency-update/SKILL.md +30 -0
  34. package/skills/feature-work/SKILL.md +39 -0
  35. package/skills/incident-response/SKILL.md +32 -0
  36. package/skills/knowledge-capture/SKILL.md +463 -0
  37. package/skills/onboard-codebase/SKILL.md +34 -0
  38. package/skills/opus-plan/SKILL.md +400 -0
  39. package/skills/pan-approve/SKILL.md +136 -0
  40. package/skills/pan-code-review/SKILL.md +249 -0
  41. package/skills/pan-config/SKILL.md +164 -0
  42. package/skills/pan-convoy-synthesis/SKILL.md +249 -0
  43. package/skills/pan-diagnose/SKILL.md +360 -0
  44. package/skills/pan-docker/SKILL.md +279 -0
  45. package/skills/pan-docs/SKILL.md +113 -0
  46. package/skills/pan-down/SKILL.md +434 -0
  47. package/skills/pan-health/SKILL.md +240 -0
  48. package/skills/pan-help/SKILL.md +237 -0
  49. package/skills/pan-install/SKILL.md +339 -0
  50. package/skills/pan-issue/SKILL.md +596 -0
  51. package/skills/pan-kill/SKILL.md +172 -0
  52. package/skills/pan-logs/SKILL.md +255 -0
  53. package/skills/pan-network/SKILL.md +320 -0
  54. package/skills/pan-oversee/SKILL.md +290 -0
  55. package/skills/pan-plan/SKILL.md +521 -0
  56. package/skills/pan-projects/SKILL.md +239 -0
  57. package/skills/pan-quickstart/SKILL.md +440 -0
  58. package/skills/pan-reload/SKILL.md +44 -0
  59. package/skills/pan-rescue/SKILL.md +271 -0
  60. package/skills/pan-restart/SKILL.md +53 -0
  61. package/skills/pan-setup/SKILL.md +478 -0
  62. package/skills/pan-skill-creator/SKILL.md +168 -0
  63. package/skills/pan-skill-creator/references/output-patterns.md +141 -0
  64. package/skills/pan-skill-creator/references/workflows.md +90 -0
  65. package/skills/pan-skill-creator/scripts/init_skill.py +176 -0
  66. package/skills/pan-status/SKILL.md +493 -0
  67. package/skills/pan-subagent-creator/SKILL.md +295 -0
  68. package/skills/pan-subagent-creator/assets/validate-readonly-query.sh +35 -0
  69. package/skills/pan-subagent-creator/references/example-agents.md +308 -0
  70. package/skills/pan-subagent-creator/scripts/init_agent.py +126 -0
  71. package/skills/pan-sync/SKILL.md +272 -0
  72. package/skills/pan-tell/SKILL.md +157 -0
  73. package/skills/pan-test-config/SKILL.md +208 -0
  74. package/skills/pan-tracker/SKILL.md +288 -0
  75. package/skills/pan-up/SKILL.md +458 -0
  76. package/skills/pan-workspace-config/SKILL.md +303 -0
  77. package/skills/refactor/SKILL.md +30 -0
  78. package/skills/refactor-radar/SKILL.md +475 -0
  79. package/skills/release/SKILL.md +25 -0
  80. package/skills/send-feedback-to-agent/SKILL.md +98 -0
  81. package/skills/session-health/SKILL.md +76 -0
  82. package/skills/session-health/scripts/check_sessions.py +166 -0
  83. package/skills/skill-creator/SKILL.md +92 -0
  84. package/skills/skill-creator/scripts/init_skill.py +152 -0
  85. package/skills/skill-creator/scripts/package_skill.py +123 -0
  86. package/skills/stitch-design-md/README.md +34 -0
  87. package/skills/stitch-design-md/SKILL.md +172 -0
  88. package/skills/stitch-design-md/examples/DESIGN.md +154 -0
  89. package/skills/stitch-react-components/README.md +36 -0
  90. package/skills/stitch-react-components/SKILL.md +47 -0
  91. package/skills/stitch-react-components/examples/gold-standard-card.tsx +80 -0
  92. package/skills/stitch-react-components/package-lock.json +231 -0
  93. package/skills/stitch-react-components/package.json +16 -0
  94. package/skills/stitch-react-components/resources/architecture-checklist.md +15 -0
  95. package/skills/stitch-react-components/resources/component-template.tsx +37 -0
  96. package/skills/stitch-react-components/resources/stitch-api-reference.md +14 -0
  97. package/skills/stitch-react-components/resources/style-guide.json +27 -0
  98. package/skills/stitch-react-components/scripts/fetch-stitch.sh +30 -0
  99. package/skills/stitch-react-components/scripts/validate.js +68 -0
  100. package/skills/stitch-setup/SKILL.md +94 -0
  101. package/skills/web-design-guidelines/SKILL.md +39 -0
  102. 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.