diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 6610fca..3a39cd3 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "cstack", - "version": "0.2.0", + "version": "0.3.0", "description": "Codex plugin packaging PStack, Cursor Team Kit, and Matt Pocock skills.", "author": { "name": "Camgineer", diff --git a/hooks/scripts/poteto-mode-state.mjs b/hooks/scripts/poteto-mode-state.mjs index 4e3bd52..ee96a62 100644 --- a/hooks/scripts/poteto-mode-state.mjs +++ b/hooks/scripts/poteto-mode-state.mjs @@ -213,7 +213,7 @@ export async function handleHook(input, options = {}) { return { hookSpecificOutput: { hookEventName: "SessionStart", - additionalContext: "C-Stack remains active for this resumed or compacted session. Apply $cstack:poteto-mode, $cstack:simple-as-writing, policy/coding-standards.md, and policy/models.md. Do not infer authority beyond the user request.", + additionalContext: "C-Stack remains active for this resumed or compacted session. Apply $cstack:poteto-mode, $cstack:simple-as-prose, policy/coding-standards.md, and policy/models.md. Do not infer authority beyond the user request.", }, }; } @@ -245,7 +245,7 @@ export async function handleHook(input, options = {}) { return { hookSpecificOutput: { hookEventName: "UserPromptSubmit", - additionalContext: "C-Stack defaults are active. Apply $cstack:poteto-mode, $cstack:simple-as-writing, policy/coding-standards.md, and policy/models.md. Default activation does not expand user authority.", + additionalContext: "C-Stack defaults are active. Apply $cstack:poteto-mode, $cstack:simple-as-prose, policy/coding-standards.md, and policy/models.md. Default activation does not expand user authority.", }, }; } @@ -260,7 +260,7 @@ export async function handleHook(input, options = {}) { return { hookSpecificOutput: { hookEventName: "UserPromptSubmit", - additionalContext: "C-Stack is active for this session. Apply $cstack:poteto-mode, $cstack:simple-as-writing, policy/coding-standards.md, and policy/models.md. Do not infer authority beyond the user request.", + additionalContext: "C-Stack is active for this session. Apply $cstack:poteto-mode, $cstack:simple-as-prose, policy/coding-standards.md, and policy/models.md. Do not infer authority beyond the user request.", }, }; } diff --git a/package.json b/package.json index a869d45..9caa4d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cstack", - "version": "0.2.0", + "version": "0.3.0", "private": true, "description": "C-Stack Codex plugin", "scripts": { diff --git a/policy/defaults.md b/policy/defaults.md index ab7cb21..7aca625 100644 --- a/policy/defaults.md +++ b/policy/defaults.md @@ -2,8 +2,7 @@ Apply C-Stack for this session. -- Writing: `skills/simple-as-writing/SKILL.md` +- Writing: `skills/simple-as-prose/SKILL.md` - Coding standards: `policy/coding-standards.md` - Model policy: `policy/models.md` - Session mode: `skills/poteto-mode/SKILL.md` unless the user said `disable $poteto-mode` - diff --git a/skills/simple-as-prose/SKILL.md b/skills/simple-as-prose/SKILL.md new file mode 100644 index 0000000..7c04679 --- /dev/null +++ b/skills/simple-as-prose/SKILL.md @@ -0,0 +1,93 @@ +--- +name: simple-as-prose +description: Write or revise prose so it is plain, specific, natural, and easy to act on. Apply to every user-facing or agent-facing prose surface, including replies, status updates, emails, documents, tickets, pull request text, commit messages, instructions, explanations, UI copy, and code comments. Also apply when the user asks to rewrite, polish, simplify, shorten, or remove AI tone. +metadata: + authors: + - Alex Hormozi + - "@Anthony-Lionetti" + - "@Camgineer" +--- + +# Simple as prose + +Apply this standard every time you write prose for a person or another agent. Preserve the meaning, facts, required terms, tone, and constraints. + +## Set the job + +Before drafting, determine the reader, shared context, desired outcome, and next action. Do this silently unless missing information would change the result. + +## Write the point first + +- Lead with the result, decision, risk, or request. +- Give each sentence one main idea. +- Prefer active voice, present tense, concrete nouns, and strong verbs. +- Use the shortest familiar word that preserves the meaning. +- Keep necessary technical terms. Explain them when the reader may not know them. +- Name the owner, action, timing, blocker, and proof when they affect what happens next. +- Replace vague claims with facts, examples, numbers, names, or observable criteria. +- Give each concept one name and use that name throughout. +- Vary sentence length. Keep the rhythm natural without making the reader backtrack. +- Keep useful warmth, humor, emotion, and opinion when they help the message. + +## Match the prose to its job + +- Keep chat and status updates short. Report the result before the process. +- Write requests so the reader can act without guessing. +- Write procedures as direct commands. Put the condition before the instruction. Use numbered lists only for sequences. +- Keep reference material factual and complete. Keep persuasion and opinion out of it. +- Explain one bounded topic through its real cause, constraints, tradeoffs, and consequences. +- Make tutorials produce a visible result early. Tell the reader what they should see. +- Keep code comments only for rationale, external constraints, protocol details, or measured tradeoffs that the code cannot state. + +## Remove AI tells + +- Delete filler openings, throat-clearing, repeated conclusions, generic encouragement, and empty summaries. +- Delete stock chatbot phrases such as "Of course," "Certainly," "I hope this helps," and "Let me know if." +- Replace inflated words with plain words. Prefer "use" to "utilize," "help" to "facilitate," and "is" to "serves as." +- Remove stock AI words when a concrete word fits. Common offenders include "additionally," "crucial," "delve," "enhance," "foster," "intricate," "landscape," "pivotal," "showcase," "tapestry," "testament," "underscore," and "vibrant." +- Remove empty phrases that end in "ing," such as "highlighting," "ensuring," and "showcasing," unless they name a real action and actor. +- Name the source of a claim. Delete vague attributions such as "experts believe" when no source exists. +- State the point directly instead of using "not just X, but Y." +- Use the natural number of items. Do not force ideas into groups of three. +- Repeat the correct term instead of cycling through synonyms. +- Replace abstract metaphors and promotional language with the actual mechanism, behavior, or fact. +- Remove adverbs that prop up weak verbs. Use a stronger verb or a measured fact. +- Write complete sentences. Do not compress prose into fragments, arrows, or symbol-heavy shorthand. + +## Keep punctuation quiet + +- Use periods and commas for normal separation. +- Never use an em dash, an en dash, or a hyphen as a dash substitute. Start a new sentence or use a comma. +- Use a colon only before a real list or example. +- Use straight quotation marks. +- Use headings, bold text, and lists only when they make the text easier to scan. +- Keep headings in sentence case. +- Skip decorative emoji. + +## Edit before sending + +1. Check that the first sentence gives the reader useful orientation. +2. Cut every word and sentence that adds no meaning, evidence, necessary tone, or context. +3. Split any sentence that carries two thoughts or makes the reader backtrack. +4. Fix ambiguous pronouns, modifiers, conditions, and list groupings. +5. Scan for filler, inflated language, stock phrasing, vague claims, and repeated meaning. +6. Search the final text for em dash and en dash characters. Replace every match. +7. Read the result once at normal speed. Revise anything that sounds scripted, stiff, or vague. + +## Return the right artifact + +- For a rewrite, return the improved text. Explain changes only when the explanation helps. +- For a critique, name the main clarity problems, provide the revision, and list the few rules that mattered most. +- For a draft, infer the reader and outcome. Produce the shortest complete version that works. +- For ordinary conversation, answer directly. Do not describe this editing process. + +## Completion check + +The work is complete only when all of these statements are true: + +- The reader can understand the point on the first pass. +- The next action is explicit when one exists. +- Every claim is accurate, sourced, measured, or clearly labeled as an inference or guess. +- Every sentence earns its place. +- The prose sounds like a capable person wrote it for this reader. +- The text contains no em dash or en dash characters. diff --git a/tests/inventory.test.mjs b/tests/inventory.test.mjs index f61742f..9c7a7cf 100644 --- a/tests/inventory.test.mjs +++ b/tests/inventory.test.mjs @@ -33,11 +33,12 @@ test('live skills are unique and include the three original packages plus BotKit assert.ok(names.includes('bot-transcript-check')); assert.ok(names.includes('retro')); assert.ok(names.includes('simple-as-writing')); + assert.ok(names.includes('simple-as-prose')); assert.ok(names.includes('tdd')); assert.ok(names.includes('matt-tdd')); assert.ok(names.includes('teach')); assert.ok(names.includes('matt-teach')); - assert.equal(names.length, 98); + assert.equal(names.length, 99); }); test('pinned original sources remain present', async () => {