Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
"name": "ghost",
"source": "./ghost",
"description": "Write, revise, and push blog posts to a Ghost site from Claude Code — a Ghost Admin API MCP plus a plan→draft→revise→push skill set.",
"version": "0.1.4"
"version": "0.1.5"
}
]
}
2 changes: 1 addition & 1 deletion ghost/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ghost",
"version": "0.1.4",
"version": "0.1.5",
"description": "Write, revise, and push blog posts to a Ghost site from Claude Code — a Ghost Admin API MCP plus a plan→draft→revise→push skill set.",
"author": {
"name": "Court Schuett"
Expand Down
9 changes: 9 additions & 0 deletions ghost/skills/build-style-guide/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,15 @@ Combine two sources:
- Cute closers: "Happy coding!", "Until next time!", "Stay curious!", "Hope this helps!"
- Code-fence width: code blocks without a language tag, or lines exceeding ~70 columns (Ghost renders narrow)

**Also include the reading-pass tells — the ones a grep cannot catch.** These are rhythm and framing rather than fixed strings, so the guide must flag them for a *read* (with the read-aloud test: "if you wouldn't say it, it's a tell"). Carry each with a concrete before/after so the drafting and revising skills can match against real examples:
- **Choppy rhythm** — plain is not short; a run of short declaratives reads as mechanical. Connect them into substantive sentences that carry cause and effect; vary length.
- **Cleft / focus-frame** — "X is what Y", "the X is that"; lead with the subject.
- **Manufactured contrast** — "X is easy; Y is the hard part"; describe what actually happened.
- **Em-dash reveal** — "[claim] — and that turned out to be [payoff]"; end on the fact.
- **Retcon** — a fix framed as intentional design; describe what the thing does and why, not a story of having meant it all along.
- **Overselling** — "I set one rule at the start", "the part I lean on"; understate.
- **Negative-first** — lead with the reason, not the absence.

List each anti-pattern as a short bullet with a concrete example of what to avoid.

If no corpus and no interview: write the house defaults list above as baseline anti-patterns.
Expand Down
22 changes: 22 additions & 0 deletions ghost/skills/draft-post/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,28 @@ If no issues were found, say so — "All patterns clean."

---

## Phase 5b: Reading pass — the tells a grep can't catch

The greps in Phase 5 catch fixed strings. The tells that make writing read as AI are mostly **not** fixed strings — they are rhythm and framing, and they only surface on a read. A clean grep is not a clean draft. Read the whole draft once more, section by section, and fix each of the following before you show anything. When unsure, read the sentence out loud: **if you wouldn't actually say it, it's a tell.**

- **Choppy rhythm.** Plain does not mean short. A run of short declaratives reads as mechanical; substantive sentences that connect cause and effect are the voice. Rewrite staccato runs into connected sentences and vary length.
- _Choppy:_ "Publishing runs in CI. There's no separate step. Shipping is tagging a release."
- _Connected:_ "Publishing happens in CI on a pushed tag, so releasing is nothing more than tagging a clean version."
- **Cleft / focus-frame.** "X is what Y", "the X is that", "what X is is Y" — lead with the subject.
- _Before:_ "The server is what the skills reach Ghost through." → _After:_ "The skills reach Ghost through the server."
- **Manufactured contrast.** "X is easy; Y is the hard part" is a tidy setup that reads as AI. Describe what actually happened instead.
- **Em-dash reveal.** "[claim] — and that turned out to be [payoff]." Drop the reveal; end on the fact.
- **Retcon.** Do not dress a fix up as intentional design. Describe what the thing does and why, not a story of having meant it all along.
- _Before:_ "That's deliberate: the server stays up so…" → _After:_ "The server stays up rather than exiting, because exiting surfaces only an opaque error."
- **Overselling.** "I set one rule at the start", "the part I lean on". Understate — it's a goal or a handy feature, not a manifesto.
- **Negative-first.** Lead with the reason, not the absence.
- _Before:_ "Pages don't get their own tools." → _After:_ "Because a page is the same object as a post, the tools take a `type` argument."
- **Slip-narration.** Present the working config, not a blow-by-blow of what broke and how it got fixed.

Fix these in the file. Only then continue to the hand-off.

---

## Phase 6: Confirm and hand off

After the audit, confirm the draft is ready for review:
Expand Down
9 changes: 9 additions & 0 deletions ghost/skills/revise-post/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,15 @@ If the style guide is available, also check:
- Sentence and paragraph rhythm matches Observed patterns.
- Vocabulary register is consistent with the style guide.

**Then read the section — don't just grep it.** The patterns above are fixed strings; the tells below are rhythm and framing, and they only surface on a read. Read the section out loud: if you wouldn't actually say a sentence, it's a tell. Fix each in place.
- **Choppy rhythm** — plain is not short; a run of short declaratives reads as mechanical. Connect them into substantive sentences that carry cause and effect, and vary length.
- **Cleft / focus-frame** — "X is what Y", "the X is that"; lead with the subject ("The skills reach Ghost through the server," not "the server is what the skills reach Ghost through").
- **Manufactured contrast** — "X is easy; Y is the hard part"; describe what actually happened instead.
- **Em-dash reveal** — "[claim] — and that turned out to be [payoff]"; drop the reveal and end on the fact.
- **Retcon** — a fix dressed up as intentional design; describe what the thing does and why, not a story of having meant it all along.
- **Overselling** — "I set one rule at the start", "the part I lean on"; understate.
- **Negative-first** — lead with the reason, not the absence ("Because a page is the same object as a post…," not "Pages don't get their own tools").

#### Axis 3 — Content and accuracy

Verify every factual claim in the section:
Expand Down
Loading