skills/technical-article-writing/SKILL.md
Methodology for writing argumentative technical articles — pieces that convince the reader of a specific claim through a chain of reasoning. Use when the user wants a technical article, essay, or book chapter that takes a position — introducing a new idea, challenging an accepted one, or arguing for a particular approach. Triggers on phrases like "write an article/essay/chapter about X," "make the case for X," "argue that Y," or structuring a multi-chapter argument about agents, architectures, systems design, or methodology. Do NOT trigger for tutorials ("how to do X"), reference or API documentation, release notes, changelogs, or pure explainers where no claim is being argued — those need a different framework.
npx skillsauth add lidessen/skills technical-article-writingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A methodology skill for helping users write technical articles that build conceptual frameworks. The goal is to help the user produce content where readers are guided from familiar ground to a new idea through a chain of reasoning that feels inevitable rather than imposed.
This skill is about how to write, not what to write about. Apply it across topics ranging from agent architectures to system design to methodology essays.
| Argument | Behavior |
|----------|----------|
| (none) or free-form topic | Start a new piece — produce the Default first-response format (Phase 1–7 planning), then draft on approval. |
| brief | Produce only the Default first-response format scaffold (core idea, audience, reasoning chain, outline, style constraints) — stop before drafting. User reviews, then requests drafting. 想单看用户画像和 modulator 合成后的 effective voice spec,走 /writing-profile show 即可。|
| revise <path> | Run Phase 7's three revision passes + mechanical voice pass on an existing draft at <path>. Skip Phase 1–6. |
A good technical article has three things going at once:
The most common failure is #2: facts presented in parallel rather than built into an argument. The piece reads as "here are five things about X" instead of "here is why X matters and what follows from it." The reader learns things but doesn't feel why any of it matters. The methodology below is designed to prevent that.
This skill is optimized for argumentative technical writing — articles, essays, or book chapters where the goal is to convince a reader of a specific claim through a chain of reasoning. It serves less well for:
Before applying the methodology, check: does this piece have a claim someone could reasonably disagree with? If no, use a different framework — forcing argument structure onto non-argumentative writing damages both.
When a piece is a hybrid (e.g., a tutorial that also argues for a particular approach), apply this skill only to the argumentative spine and leave the instructional parts alone.
Before writing anything, help the user articulate the core idea in one sentence. Not a topic, not a scope — an actual claim.
Push the user until they can finish this sentence: "The one thing I want readers to walk away believing is _______."
Weak answers:
Strong answers:
Strong answers have a claim that can be argued for and that someone could disagree with. If no one could disagree with the sentence, it's not a core idea — it's a topic.
Ask the user: "If a reader believes this sentence, what changes for them?" If nothing changes — no decision they make differently, no perspective they update — the idea needs sharpening.
Great technical articles usually have a consequence that follows from the core idea. The layering methodology, the new framework, the redesign recommendation. If the user has a consequence in mind, note it — it will be the climax of the article. If they don't, ask whether they want the article to end on "here's the idea" or "here's what we should do about it."
Once the core idea is clear, work backward to construct the reasoning chain that leads there.
Ask the user: "Starting from something the reader already believes or can see with their own eyes, what's the shortest chain of steps that forces them to conclude the core idea?"
Each step should be:
Write the chain out as a numbered list before drafting any prose. For example:
1. LLMs are text predictors — they only see tokens and predict next tokens
2. To make them do tasks, you must feed task progress back as text
3. The natural way to do this is append-only message sequences (dialogue)
4. So Agents necessarily take a dialogue form
5. Tool calls are just special messages in the dialogue
6. Modern harnesses (Claude Code etc.) are entirely about managing this dialogue
7. But dialogue has a density problem — each message serves multiple roles
8. Patches (memory/compaction) don't fix the underlying problem
9. The fix is to stop treating dialogue as the context substrate
Each step sets up the next. If a step feels like a leap, insert a sub-step. If a step doesn't lead anywhere, cut it.
For each step, ask: "Does the reader already believe the thing this step relies on?" If not, that belief needs to be established earlier, or the step won't land.
Translate the reasoning chain into a chapter/section structure. The mapping isn't always 1:1 — sometimes one step needs a whole section, sometimes several steps fit in one section.
The opening must do two things at once:
A good test: if you removed the opening, would the rest of the document feel like it has its feet on the ground? If not, the opening isn't doing its job.
The title and first sentence together decide whether anyone reads the rest. Treat them as their own artifact — revise them separately, and revise them last, after the draft is stable enough that you know what you're actually promising.
Test: read only the title and first sentence aloud, cold, as if you'd stumbled onto them. Would you keep reading? If not, rewrite before polishing anything downstream.
Transitions between sections are where most technical writing breaks down. Each transition should:
If a transition is just "Now let's talk about X," the structure hasn't earned its next step.
The single biggest skill in technical writing is knowing what to include and what to leave out. The principle: every detail must either support the reasoning chain or make it more vivid. Everything else is noise.
For each concrete detail (version number, implementation specifics, benchmark number, anecdote), ask:
The detail test is necessary but not sufficient. Some details earn their place by giving the prose texture — a well-placed anecdote, a moment of dry humor, a deliberately concrete image. These aren't load-bearing for the argument, but they give the reader a place to rest between heavier moves.
The revised rule: every detail either supports the chain, makes it vivid, or lets the reader breathe. Keep one or two breathing moments per chapter where they genuinely land. Cut them if they pile up, become cute, or distract from the argument immediately around them.
Ruthlessness without breathing room produces efficient prose that no one wants to finish.
Not all parts of an article deserve equal detail. Heuristic:
For example, in an article whose core idea is about context layering, Claude Code's context management deserves detail because that's where the argument lives. Claude Code's permission system, while interesting, deserves one sentence — it establishes complexity without being load-bearing.
For technical articles, factual errors destroy credibility. Before committing to specific technical claims (what a system does, what a tool supports, version-specific behavior), verify. When in doubt, use web search.
Fact tracking has two directions, both required:
assets/project-brief-template.md) the same day. Unverified claims that quietly accumulate in a draft are how factual errors ship.Technical articles fail when the voice fights the content — but "the voice" is actually two voices composed: the user's baseline voice (stable across genres) and the technical-article genre bias (density, closure, hedge policy). Compose them first, then apply the failure-mode fixes.
Before touching any of the fixes below:
~/.claude/writing-profile/profile.md — the ## 坐标 YAML block and the ## 机械反 AI 清单.formality, pronoun_density, technical_density, hedge_floor).If profile.md is absent, tell the user once — "No writing profile found. Output will use generic defaults; run /writing-profile to calibrate." — and proceed with genre defaults only. Don't auto-invoke the profile skill.
The shared framework (what the operations mean, apply order, fallback contract) lives in ../writing-profile/references/genre-adaptation.md. The recipe specific to this genre lives in references/voice-calibration.md.
With the spec in mind, watch for these failure modes:
Signs: "paradigm," "fundamental," "essentially," "leveraging," abstract nouns stacked on abstract nouns. Fix: For each abstract term, ask "what's the concrete thing this points to?" Replace the abstract term with the concrete thing wherever possible.
Signs: Heavy metaphors, clever analogies every paragraph, performative writing. Fix: Cut metaphors unless they're doing load-bearing work. A single well-placed analogy is worth ten decorative ones. If you need a metaphor to explain something, that's fine — but if you're adding one because the prose feels bare, don't.
Signs: "It might be argued that," "one could say," "perhaps," "to some extent." Fix: State claims directly. If a claim is contested, state it and then acknowledge the contest directly: "X is true. Some argue Y, but Z." Not "It could perhaps be argued that X might be the case."
Signs: every sentence is roughly the same length; paragraphs all the same shape; no short punches between longer builds. The writing is technically correct and somehow exhausting. Fix: after drafting a paragraph, glance at sentence lengths. If they cluster within a narrow band, rewrite to create variation.
Short sentences carry weight. Use them on the claim.
Long sentences carry nuance, accumulation, qualification — use them where the argument is building rather than landing. A short sentence after three long ones is often the difference between prose that reads and prose that slogs.
Ask the user who the audience is, specifically. "Technical readers" is not specific enough. "Someone who has built a chatbot but has never worked on an agent" — that's specific. This shapes:
When in doubt, err toward explaining. Assume the reader is smart but unfamiliar.
Not every article needs diagrams. Most articles need fewer than the author initially thinks.
Use ASCII when:
Examples of good ASCII use:
Use AI-generated images when:
Limit AI-generated images to 2-4 per chapter. Each one should be load-bearing — the chapter is worse without it.
Tables are the most-used visual in technical writing and the easiest to overuse.
Use a table when:
Don't use a table when:
Keep cells terse. If a cell needs a paragraph, the table is the wrong container.
Code in a technical article is rarely meant to be run — it's meant to be read as argument. Calibrate accordingly:
code references: when the shape matters but the syntax doesn't. Most of the time, this is enough.Signs you're overshowing code: the reader is skipping your code blocks. Signs you're undershowing: the reader can't picture what the system actually looks like. Aim for the middle — enough code to ground the argument, not so much that it becomes a tutorial.
Skip diagrams when:
When the draft is stable, walk through the document and for each potential visual location, classify: ASCII, AI-generated, or none. Batch the AI-generated ones — commission them together for visual consistency, after the text is finalized.
First drafts serve the writer. Revision serves the reader. Budget at least as much time for revision as for drafting — often more. Most of the craft lives here.
Revise from structure down to sentences, never the other way around. Polishing a sentence in a paragraph you're about to cut is wasted work.
1. Structural pass — does the chain still hold?
Read only the section headings and the first sentence of each section. If that "skeleton read" doesn't convey the argument, the structure is broken — fix it before touching any prose. Questions to ask:
2. Paragraph pass — does each paragraph earn its place?
For each paragraph: what does it establish? If you can't answer in one clause, cut or merge it. Watch for:
3. Sentence pass — rhythm, weight, concrete language.
Apply Phase 5 at the sentence level. Vary sentence length. Replace abstract nouns with the concrete things they point to. Cut hedges. Read passages aloud — if you stumble, the reader will too.
3a. Mechanical voice pass — run after prose-level revision.
With the draft otherwise clean, execute the voice spec from Phase 5 mechanically, in order:
机械反 AI 清单 (from ~/.claude/writing-profile/profile.md) — user-specific, always wins first. 必删 → delete, 必审查 → flag-and-rewrite, 保留 → leave even if it looks odd.D_L), hedge count (T_F), first-person ratio (E_I). If a whole section trends hard against the user's preference on any of these, flag for rewrite.If no profile exists, skip step 1 but still run steps 2 and 3.
Target: 20–40% shorter than the first draft. Most technical drafts are substantially bloated on pass one; reaching this target usually makes the piece stronger, not weaker.
Safe cuts:
When unsure, cut and see if the piece feels damaged. Restoration is easy; noticing bloat is hard.
Two stop criteria:
If you hit the second before the first, ship anyway. Perfectionism beyond this point produces diminishing returns and can sand off what made the piece worth reading.
For any significant change — new section, restructuring, new chapter — propose the plan before writing. Users consistently prefer "here's what I'm going to do, does this look right" over "here's 2000 words, what do you think."
Propose in structural terms:
When the user brings a new piece (not mid-draft work), produce this before writing any prose. Keep it under one page.
~/.claude/writing-profile/profile.md + technical-article modulator from references/voice-calibration.md), voice rules, avoid-list, audience-specific choices (Phase 5). If no profile exists, note that and use genre defaults.If the user has already locked in some fields, skip them and note which were provided. If fields are partially filled, mark them tentative and flag them in "Open questions."
Why a fixed format: without a contract, different agents (and different sessions with the same agent) freelance on what to propose first — the user ends up re-scoping the piece every session. A fixed format locks the skeleton in one review-able artifact. It costs ~5 minutes to produce and prevents hours of rework from drafting on a shaky foundation. Even if the user says "just draft it," produce this first — showing the skeleton is faster than arguing about it after 2000 words.
Users will often make local suggestions that are good in isolation but break the reasoning chain. When this happens, point it out:
"That detail is interesting, but it would break the chain between step 3 and step 4 — it introduces a concept the reader doesn't have yet. Should we defer it to section X, or should I restructure the chain to accommodate it?"
Don't just silently incorporate feedback that damages the structure.
If the user corrects a factual error, immediately:
If the user isn't sure which way to take something, offer 2-3 framed options with trade-offs:
Don't ask "what do you want?" when you can ask "which of these directions fits best?"
This is operational hygiene, not writing craft — skip it on standalone short pieces. For multi-chapter or multi-session work, maintain a project brief that another writer (or another AI agent) could read to get up to speed in 5 minutes. This document is for continuity, not for the reader.
The brief plays the same role for a writing project that architectural design docs play for a code project — an artifact that survives beyond any single session so successive agents stay aligned. (Setting up this kind of succession artifact for a codebase is what the harness and design-driven skills are for.)
Use the template at assets/project-brief-template.md — copy it to the project directory (e.g., BRIEF.md alongside the draft) and fill in the fields as they get locked in. The template covers: core idea, reasoning chain, structure, style constraints, fact hygiene (claims pending verification + verified facts), terminology conventions, hidden throughline, and open questions.
Update the brief whenever:
The brief is a living artifact. It's more valuable at the end of the project than at the beginning — treat each update as cheap insurance against the next session losing context.
A typical full workflow:
~/.claude/writing-profile/profile.md, apply the technical-article modulator from references/voice-calibration.md (Phase 5)The order isn't rigid. Sometimes the core idea only becomes clear after drafting two sections. Sometimes the reasoning chain shifts when the user pushes back. The skill is in knowing which phase to return to when something isn't working.
Symptom: The article feels like a list of facts, not an argument. Fix: You're missing the reasoning chain. Return to Phase 2. The reader should feel pulled forward, not pushed through a catalog.
Symptom: The reader says "so what?" Fix: The core idea isn't sharp enough or the consequence isn't stated. Return to Phase 1.
Symptom: The article is too long. Fix: Usually a detail calibration problem. Walk through each paragraph asking "does this support the chain?" Cut ruthlessly.
Symptom: The reader is confused about a specific concept. Fix: Either a hidden assumption (Phase 2) or insufficient scaffolding for the audience (Phase 5).
Symptom: The user keeps rewriting sections after you draft them. Fix: You're drafting without enough alignment. Propose structure and intent before writing.
Symptom: Factual errors keep appearing. Fix: The project brief isn't being maintained. When an error is caught, add it to the brief immediately and audit the rest of the draft.
Symptom: The prose is efficient but flat — the reader gives up halfway. Fix: Phase 4's breathing-room rule and Phase 5's rhythm guidance. Efficient isn't the same as readable.
Symptom: Revision feels endless. Fix: Apply Phase 7's two stop criteria. Past the second, you're damaging more than you're improving.
Most of your value lives in Phase 1, Phase 2, and Phase 7 — find the idea, build the chain, revise hard. Get those right and the rest follows. If you're tempted to skip to drafting before the one-sentence core idea is locked in, stop.
testing
Operational deployer for the lidessen skills collection — wires harness config (CLAUDE.md / AGENTS.md / .cursor/) in a target project, injects cross-cutting principles (e.g. principal contradiction first), and reconciles when lidessen evolves. Triggers on "/setup-lidessen-skills", "set up lidessen skills", "wire lidessen into this project", "sync lidessen principles", "install lidessen skills". Use after cloning or symlinking lidessen skills into a project, when adopting the collection, or when lidessen has new content the project hasn't picked up. Args — `init` to scaffold, `sync` to re-align with current lidessen, `audit` to check drift without writing. Pairs with harness (portable methodology); this is the lidessen-specific application layer.
development
Designing in territory where the industry is still groping for shape — AI-native systems, agent-first interfaces, any domain whose category is forming. Triggers on "AI native X", "agent-first X", "redefine X", "rebuild X from scratch under Y", "reframe X for Y", "what should X look like in the new paradigm", "design a system with no precedent", or the tension between "new shoes on the old path" and "a skeleton that holds on its own". Method — strip to 3-5 abstract functions, redraw the load-bearing skeleton from the new paradigm's primitives, stress-test without traditional crutches, then add familiar flesh as projection. Do NOT trigger for incremental redesigns within an existing paradigm (use design-driven), explanatory writing (use technical-article-writing), or vague "make it AI" requests. Pairs with design-driven (upstream) and goal-driven (parallel). Args — `/reframe init`, `close`, `explain [for <audience>]`.
development
Goal-driven methodology for multi-week initiatives where the destination is clearer than the path — GOAL.md as stable compass (General Line plus falsifiable success criteria), record captures what was tried and observed. Triggers on "set a goal", "track my progress on X", "this is exploratory", "I know the goal but not the path", or starting a months-long initiative without a clear technical shape. Use for research, exploratory features, learning projects with a shippable output, book/article series, job search, side-business launches. Do NOT trigger for single-task work, bug fixes, week-long features with a clear plan, vague aspirations ("be healthier"), habit tracking, or general life management. Pairs with design-driven (why/how-far vs what-shape) and runs parallel to reframe. Args — `/goal-driven set`, `review`, `close`.
development
Evidence-driven methodology for the execution layer — every claim of progress requires a falsifiable observation; "looks right to me" is rejected. Use for production code, regression-prone systems, or any task where build-time discipline materially affects outcome quality. Triggers on "set up TDD", "build discipline", "no progress without evidence", "test-first", "verify rigorously", "production code workflow". Do NOT trigger for prototypes, exploratory spikes, throwaway scripts, or doc-only changes. Pairs with design-driven (which defines what to verify; evidence-driven defines how) — each works alone. Args — `/evidence-driven init` to wire up agent configs and optional pre-commit hooks. No periodic-audit command; it's an always-on overlay.