Markdown Article Formatter
JimLiu/baoyu-skills
Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.
Draft a complete documentation page for a new Warp feature from its PRODUCT.md and/or TECH.md spec.
$ npx skills add warpdotdev/common-skills --skill write-feature-docs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install warpdotdev/common-skills write-feature-docs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/write-feature-docs .claude/skills/write-feature-docs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "write-feature-docs" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docs into .claude/skills/write-feature-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-feature-docs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add warpdotdev/common-skills --skill write-feature-docs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install warpdotdev/common-skills write-feature-docs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/write-feature-docs .agents/skills/write-feature-docs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-feature-docs" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docs into .agents/skills/write-feature-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-feature-docs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/common-skills --skill write-feature-docs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install warpdotdev/common-skills write-feature-docs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/write-feature-docs .cursor/skills/write-feature-docs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-feature-docs" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docs into .cursor/skills/write-feature-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-feature-docs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/warpdotdev/common-skills.git --path .agents/skills/write-feature-docs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add warpdotdev/common-skills --skill write-feature-docs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install warpdotdev/common-skills write-feature-docs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/write-feature-docs .gemini/skills/write-feature-docs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-feature-docs" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docs into .gemini/skills/write-feature-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-feature-docs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install warpdotdev/common-skills write-feature-docsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add warpdotdev/common-skills --skill write-feature-docs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/write-feature-docs .github/skills/write-feature-docs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-feature-docs" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docs into .github/skills/write-feature-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-feature-docs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add warpdotdev/common-skills --skill write-feature-docs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install warpdotdev/common-skills write-feature-docs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/warpdotdev/common-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/write-feature-docs .opencode/skills/write-feature-docs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-feature-docs" agent skill from https://github.com/warpdotdev/common-skills/tree/main/.agents/skills/write-feature-docs into .opencode/skills/write-feature-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-feature-docs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-feature-docsDraft a complete documentation page for a new Warp feature from its PRODUCT.md and/or TECH.md spec.
Write Feature Docs is an agent skill from warpdotdev/common-skills. Draft a complete documentation page for a new Warp feature from its PRODUCT.md and/or TECH.md spec. Use when an engineer has written a spec and needs to produce a first-pass MDX draft for the warpdotdev/docs repo. Also handles features without specs by researching the codebase first. Invoke this skill whenever an engineer mentions writing docs for a feature, drafting a docs page, creating feature documentation, starting the eng-docs workflow, or converting a spec into documentation. Requires an interactive…
Its SKILL.md is about 7.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering Markdown. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 69b4753. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
FEATURE_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Write Feature Docs loads about 7.1k tokens when it runs. Until then it costs about 199 tokens; SKILL.md has 3,407 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from warpdotdev/common-skills at commit 69b4753, republished under its MIT licence (© warpdotdev). 3,407 words, ~7,058 tokens.
.claude/skills/write-feature-docs/SKILL.md (or your agent's skills folder).Draft a complete documentation page for a new Warp feature. You read the feature's spec, verify technical claims by researching the codebase yourself, confirm the content design plan and then the outline with the engineer, and only then produce a complete MDX draft and open a draft PR in warpdotdev/docs — tagging the docs team for review.
The engineer's job is to confirm what you couldn't verify from the spec and code — not to do a full accuracy review, not to polish prose, not to know docs conventions.
warpdotdev/docs and tag the docs teamSteps 3 and 4 are two separate confirmations, in that order. The outline is derived from the plan — the plan picks the content type, and the content type determines what sections the outline has. Presenting them together would show the engineer an outline built on an audience they have not agreed to yet, and they would anchor on the concrete outline instead of reconsidering the question above it. Settle who the page is for, then decide what goes in it.
Ask the engineer for the spec ID if they haven't provided it. The spec ID is one of:
APP-1234, REMOTE-1234, QUALITY-408gh-): gh-4567vertical-tabs-hover-sidecarLook for the spec files at:
specs/<id>/PRODUCT.md — primary source: user-facing behavior, what and whyspecs/<id>/TECH.md — secondary source: implementation, data modelRead both files if both exist. PRODUCT.md is the primary driver for the docs content.
When reading TECH.md: Before incorporating anything from it, identify content that looks like internal implementation detail — database schema, internal service names, private API endpoints, confidential server architecture. Present these flagged items to the engineer and ask them to confirm what's safe to include in public docs and what should stay internal. Do not include anything marked confidential in the draft.
This confirmation is why the skill requires a present engineer. There is no unattended path: without someone to say what is safe to publish, TECH.md content cannot be drafted at all.
If neither file exists, skip to No-spec fallback.
Before presenting the plan or the outline, use the GitHub CLI to verify as much technical content as possible yourself — reducing what the engineer needs to confirm to only what you genuinely cannot determine from the code.
Things to verify from code:
^[A-Za-z0-9][A-Za-z0-9_-]*$ and skip the shell search if you cannot produce one safely; then run FEATURE_TOKEN="<validated-token>" && gh search code "${FEATURE_TOKEN}" --repo warpdotdev/warp-internal.**Settings** > **AI** > **Knowledge**)gh api user --jq .login to get the handle of the person currently running the skill — use this only when the skill is being invoked directly by the spec engineer. If a docs team member or non-author is running the skill, use the discovery steps below instead.^[A-Za-z0-9][A-Za-z0-9-]*$). If the spec ID contains any other characters, skip the lookup entirely and use [TODO: tag spec author] as a placeholder. If the spec ID is valid, assign it to SPEC_ID and work through these steps in order, stopping as soon as a handle is found:Co-authored-by: trailers in the commit message — in repos that mirror from a private source (like warp-internal), the sync bot is the commit author but the real author appears in a Co-authored-by: trailer. Extract the first non-bot entry:git log --follow -1 --format="%B" -- "specs/${SPEC_ID}/PRODUCT.md" \
| grep -i "^Co-authored-by:" \
| grep -v "\[bot\]" \
| head -1 \
| grep -oP '<[^>]+>' | tr -d '<>'<userid>+<username>@users.noreply.github.com, extract the handle directly: echo "$EMAIL" | grep -oP '\+\K[^@]+'. If it's a real email, resolve it via gh api "search/users?q=${EMAIL}+in:email" --jq '.items[0].login'.Synced from warp: https://github.com/warpdotdev/warp/pull/11901). Extract it and fetch the PR author:ORIG_PR=$(git log --follow -1 --format="%B" -- "specs/${SPEC_ID}/PRODUCT.md" \
| grep -oP 'https://github\.com/[^/]+/[^/]+/pull/\d+' | head -1)
# Extract owner/repo and PR number, then: gh pr view <N> --repo <owner/repo> --json author --jq '.author.login'gh pr list --search "specs/${SPEC_ID}" --repo warpdotdev/warp-internal --state merged --json author --limit 1 --jq '.[0].author.login'
# Also try: gh pr list --search "specs/${SPEC_ID}" --repo warpdotdev/warp --state merged --json author --limit 1 --jq '.[0].author.login'[bot].[bot]:EMAIL=$(git log --follow -1 --pretty=format:"%ae" -- "specs/${SPEC_ID}/PRODUCT.md")${EMAIL} is non-empty and bot-free, resolve it to a handle via gh api "search/users?q=${EMAIL}+in:email" --jq '.items[0].login'.[TODO: tag spec author] as a placeholder in the PR body.For each claim you verify from code, mark it confirmed. For claims you can't verify (UI behavior not in code, product intent, behavior of unreleased features), flag them as [UNVERIFIED] in the outline — those are the only things the engineer needs to focus on.
This is the first of two confirmations, and it comes before the outline. Settle who the page is for before deciding what goes in it.
Fill in .agents/templates/content-design-plan.md from the docs repo, using .agents/references/content-design-plan.md for what each field is asking: audience and JTBD, problem, goals, purpose and value, content type, skill and template, and high-impact scenarios with explicit exclusions.
Print it to the terminal, then say:
"Before I outline the page, please confirm this is the right reader and the right job. Correct anything that's off, or say 'looks good' and I'll draft the outline."
Wait for the engineer's reply. Do not produce the outline in the same message. The plan decides the content type, and the content type decides what sections the outline has — an outline shown alongside an unconfirmed plan invites the engineer to anchor on the concrete sections in front of them rather than question the audience above them.
If they change the audience, the content type, or the scope, revise the plan and re-confirm before moving on. Carry the confirmed plan into the PR body in Step 6.
Generate a concise outline — no prose — built on the confirmed plan from Step 3. The outline shows what you've confirmed from research and exactly what still needs engineer input.
Print the outline to the terminal in this format:
📄 Docs outline for [Feature name]
PROPOSED PLACEMENT
Section: src/content/docs/<section>/ (e.g., agent-platform/cloud-agents/)
File: <feature-name>.mdx
URL: docs.warp.dev/<path>/<feature-name>
CONTENT SECTIONS
title: <Feature name> (frontmatter; Starlight renders it as the H1)
Opening paragraph: [1-sentence description of what you'll write]
## Key features — [which 2-4 capabilities to highlight as bullets]
## How it works — [the conceptual model: what and why, no steps]
## <Usage section title> — [e.g., "Creating environments", "Configuring X"]
Prerequisites: [any prerequisites to list]
Steps:
1. [Step description]
2. [Step description]
3. [Step description]
...
## Related pages — [cross-links to suggest]The sections above are defaults. Adapt the outline to the feature: omit
## How it worksif the feature needs no conceptual explanation, add multiple usage sections if the feature has distinct workflows, and collapse## Key featuresinto the opening paragraph if the feature is simple enough.
VERIFIED FROM CODEBASE ✅
- [e.g., "Feature flag: `my_feature_flag` confirmed in warp-internal"]
- [e.g., "Settings path: confirmed as Settings > AI > Agents > Permissions"]
NEEDS YOUR CONFIRMATION ⚠️
- [e.g., "Step 3 — does the sync trigger automatically or require a manual action?"]
- [e.g., "Is the 'Export' button visible before the feature flag is enabled?"]After printing the outline, say:
"I've verified what I could from the codebase. Please check the items marked ⚠️ above and reply with any corrections, or say 'looks good' to proceed."
Wait for the engineer's reply before continuing. Incorporate their feedback, then draft.
If their feedback contradicts the plan confirmed in Step 3 — a different reader, a different content type — revise the plan too rather than letting the two drift apart. The plan travels into the PR body, so a stale one misleads the reviewer.
Generate a complete .mdx file based on the confirmed outline. The output is ready to drop directly into warpdotdev/docs.
Use the canonical template for the content type the plan chose, from .agents/templates/ in the docs repo — feature-doc.md, conceptual.md, procedural.md, reference.md, troubleshooting.md, quickstart.md, or guide-page.md. Those are the source of truth and they carry their own field-by-field guidance. The sketch below shows the shape of the most common one, feature documentation, so you know what to expect; it is not a substitute for reading the real template.
Two rules the templates enforce that are easy to get wrong from memory: the page title goes in frontmatter, not a body H1 (Starlight renders the frontmatter title as the H1, so a body H1 duplicates it), and every bracketed instruction must be deleted before the page ships.
---
title: [Feature name — sentence case]
description: >-
[1-2 sentence standalone summary. Lead with the user benefit. Include the
feature name and a key term or two so it works as a search result snippet.]
---
[Opening paragraph: what the feature does and its primary benefit.
1-3 sentences. Lead with what the user can accomplish, not the implementation.]
:::note
[Optional: key context the reader needs upfront — a prerequisite, a limitation,
or when NOT to use this feature. Delete this callout if nothing applies.]
:::
## Key features
* **Feature A** - What it does and why it matters to the user.
* **Feature B** - What it does and why it matters to the user.
## How it works
[CONCEPTUAL section: explain system behavior, data flow, or architecture.
Answer "what" and "why" before "how." Define any new terms when they
first appear. Do NOT include step-by-step procedures in this section —
keep conceptual and procedural content clearly separated.]
## [Usage section title]
[PROCEDURAL section: motivate the task first, then give numbered steps.
Briefly explain why the user is doing this before telling them how.]
### Prerequisites
* **[Prerequisite]** - What it is and where to get it. See [full reference](link-here).
### [Task name — sentence case, e.g., "Create an environment with the CLI"]
1. First step. Expected outcome if not obvious.
2. Second step.
3. Third step.
## Related pages
* [Related feature](../path/to/page.md)
* [Deeper guide](../path/to/guide.md)These conventions come from the Warp docs style guide and must be followed:
Headings
## How it works — ❌ ## How It Works## Agent Mode settings — ❌ ## Agent mode settingsLists
* **Term** - Description* **Term**: DescriptionUI elements and paths
Click **Save**, not Click `Save`> plain: **Settings** > **AI** > **Knowledge**Voice and tone
Frontmatter description
Environments ensure your cloud agents run with a consistent toolchain. Learn when to use environments and how to configure them.This page describes environments.Callout syntax (Astro Starlight)
:::note — supplemental context, tips:::caution — caveats, limitations:::danger — destructive or irreversible actions:::tip — helpful hints and best practicesWhat to leave as [TODO: docs reviewer — ...] placeholders
After generating the draft, attempt to capture screenshots for any [TODO: docs reviewer — screenshot needed] placeholders using computer use. This step is optional — only run it if the computer_use tool is available. If computer use is unavailable, leave all placeholders as-is.
Only attempt screenshots where all of the following are true:
Skip screenshots that require account-specific state, specific data, or content that would expose sensitive information.
Before taking any screenshot:
warp-internal-computer-use skill for launch guidance)This is a structured self-verification loop. Do not skip it — it's the primary guard against wrong-state, wrong-crop, and wrong-framing captures.
Step 1: State the expectation before capturing
Before taking any screenshot, write out what you expect to see:
CAPTURE EXPECTATION
Subject: [The specific UI element or surface being documented]
Expected elements: [2-3 specific things that MUST be visible — e.g. a panel title, a button, a specific setting]
Expected state: [The UI state — e.g. "Settings panel open", "Modal visible", "Feature active and showing output"]
Must not contain: [Anything that must NOT be visible — e.g. sensitive data, unrelated popups, loading spinners]Step 2: Capture
Take the screenshot.
Step 3: View and verify against the expectation
Use computer use to view the captured image, then check it against the expectation:
If all pass → proceed to the quality gate.
If any fail → attempt once more: re-navigate to the UI state, wait longer for the UI to settle, then re-capture and re-verify.
If the second attempt also fails → discard the screenshot and leave the [TODO: docs reviewer — screenshot] placeholder. Do not include a screenshot you can't verify.
Step 4: Quality gate — final check before including
If any item fails, discard the screenshot and leave the [TODO: docs reviewer — screenshot] placeholder.
Maximum attempts per screenshot: 2. If both fail, move on.
Crop unnecessary empty space before sizing. Keep sequences of screenshots in the same section at the same width.
Insert each screenshot:
Do not add a screenshot for every step in a procedure. Only add one where the visual genuinely aids comprehension.
<figure>
<img
src="[relative path from this MDX file to src/assets/<section>/<feature-name>-<ui-state>.png — count the directory depth of the MDX file and use that many ../ levels; e.g. 3 levels deep → ../../../assets/<section>/...]"
alt="[Descriptive alt text: what the image shows, not just 'screenshot']"
/>
<figcaption>[Caption: complete sentence, ≤10 words, orient don’t instruct, no marketing language, sentence case, ends with period.]</figcaption>
</figure>Alt text rules:
alt="Agent permissions settings with 'Always allow' selected for file reads"alt="screenshot" or alt=""Caption rules:
<figcaption>The Environments page in the Oz web app.</figcaption><figcaption>Click the toast to jump to the agent’s session.</figcaption> (procedural — put this in body text)File naming: lowercase, hyphens, descriptive — e.g. agent-mode-permissions-panel.png
File location: Save PNGs to src/assets/<section>/ in warpdotdev/docs (Astro optimizes them automatically).
Before opening the PR, confirm the docs repo's own requirements are met. warpdotdev/docs gates incoming pages on two things, and a PR that skips them will be sent back:
Gate 0 of .agents/references/docs-worthiness-criteria.md in the docs repo: is the feature shipped and GA, on a public surface? If not, do not open a PR — tell the engineer why and stop. This is worth checking even though the engineer asked for the page, because drafting for something that has not shipped yet is the most common failure, and an engineer close to the work can easily be a release ahead of their users.
The remaining gates in that reference are judgment calls about whether a change warrants docs. They govern the automated pipeline, not you — an engineer asking for docs on their own shipped feature has context the gate cannot see. Do not decline on those grounds.
The content design plan the engineer confirmed in Step 3, included in the PR body as a ## Content design plan section.
Prefer updating an existing page over creating a new one whenever a page already covers the surface.
After generating the draft, submit it to warpdotdev/docs:
Clone warpdotdev/docs to a temp directory (or use the local clone if available)
Write the MDX file to src/content/docs/<proposed-section>/<filename>.mdx
Add a placeholder entry to src/sidebar.ts under the appropriate section. Example:
// [TODO: docs reviewer — confirm placement]
{ label: '<Feature name>', link: '/<section>/<feature-name>/' },Commit and push on a new branch named docs/<spec-id>-feature-draft
Write the PR body to a temp file, then open a draft PR with --body-file. The PR description must include:
[UNVERIFIED] and [TODO] items in the draft for reviewer attentionWrite the body to /tmp/pr-body.md using whatever file-writing method is available (a file-creation tool, a Python open() call, or a shell cat with a quoted heredoc), then pass it to gh:
gh pr create --draft --body-file /tmp/pr-body.md ...Never pass the PR body inline (via --body "...", echo, or printf piped directly to gh). Shell string interpolation expands backticks, $vars, and [ ] glob patterns before the string reaches gh, corrupting any markdown that contains those characters. Writing to a file first avoids all shell interpretation of the content.
In the "Docs outline" section of the PR body, use plain bullet points (-) for agent-verified items, not - [x] checkboxes. Reserve - [ ] checkboxes only for the "Items needing review" section so reviewers know exactly which items require their action.
In the PR body, notify the spec author using the handle from Step 2:
/cc @<engineer-handle>[TODO: tag spec author] — do not wrap it in /cc @, as that would produce a malformed mention
Request review from @rachaelrenk and @hongyi-chen.If specs/<id>/PRODUCT.md and specs/<id>/TECH.md don't exist, research the codebase first before interviewing the engineer.
Research steps:
warpdotdev/warp-internal (or warp-server depending on context) for the feature name and related terms: gh search code "<feature-name>" --repo warpdotdev/warp-internalgh api repos/warpdotdev/warp-internal/contents/specsgh pr list --search "<feature-name>" --state merged --repo warpdotdev/warp-internal --limit 10After research, build as complete a picture as possible, then use ask_user_question only for specific gaps you couldn't fill from the code — not as a broad interview. Frame the questions concretely: "I found the feature in app/src/ai/. Based on the code, here's what I understand: [summary]. I couldn't determine these two things: [specific questions]."
Build the plan and outline from your research and the engineer's targeted answers, then work through Step 3 (plan confirmation) and Step 4 (outline confirmation) before drafting.
This skill previously had an "ambient mode" that let scan-new-specs drive it headlessly, skipping the confirmations in Steps 3 and 4 and embedding the outline in the PR description as a checklist instead. That mode is removed, and scan-new-specs is retired.
It produced draft PRs for features that had not shipped, because a merged spec is not a shipped feature and no unattended run could tell the difference. Skipping outline confirmation also removed the one checkpoint where a human could redirect the draft before the prose was written.
Do not re-add an unattended path here:
missing_docs in the warpdotdev/docs repo. It gates every candidate on .agents/references/docs-worthiness-criteria.md before drafting and only runs when a new stable release has shipped.TECH.md boundary.If you are running without an interactive session, stop and report that this skill requires one, rather than drafting anyway.
write-product-spec — produces the PRODUCT.md this skill readswrite-tech-spec — produces the TECH.md this skill readsmissing_docs (in warpdotdev/docs) — the release-triggered, worthiness-gated pipeline for docs on newly shipped featuresscan-new-specs — retired; see its deprecation notice© warpdotdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/write-feature-docs of warpdotdev/common-skills.
Open the folder on GitHubat commit 69b4753
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in warpdotdev/common-skills, which our catalogue first saw on October 7, 2026.
Write Feature Docs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Write Feature Docs this skillwarpdotdev/common-skills | 606 | 1 repos | ~7.1k | Automated safety check: Pass | MIT | |
| Markdown Article FormatterJimLiu/baoyu-skills | 26k | 6 repos | ~3.5k | Automated safety check: Pass | MIT | |
| MarkitdownImCa0/just-laws | 781 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Obsidian MarkdownAtmosphere/atmosphere | 3.8k | 20 repos | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Gzh Designisjiamu/gzh-design-skill | 3.9k | 1 repos | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| Crosspostingwasp-lang/wasp | 19k | — | ~1.1k | Automated safety check: Pass | MIT |
JimLiu/baoyu-skills
Reformats plain text or Markdown articles with frontmatter, a title, a summary, headings, bold, lists and code blocks, and saves a separate formatted copy.
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
Atmosphere/atmosphere
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax.
isjiamu/gzh-design-skill
微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…
wasp-lang/wasp
Crosspost Wasp blog articles (MDX) to DEV.to and Medium. An agent skill from wasp-lang/wasp.
JanDeDobbeleer/oh-my-posh
Reference mapping between Oh My Posh Go segment source code and MDX documentation.
warpdotdev/common-skills
Grades agent skills by scoring agent conversations for efficiency, code quality, procedure compliance, and verbosity, then drafts concrete skill edits and a shareable report.
warpdotdev/common-skills
Produce a polished, self-contained HTML "readout" document under ~/.readouts (with an auto-maintained index page), either by snapshotting the findings accumulated in the current conversation or —…
warpdotdev/common-skills
Resolve Git merge conflicts by extracting only unresolved paths, conflict hunks, and compact diffs instead of loading whole files into context.
warpdotdev/common-skills
Review a pull request diff and write structured feedback to review.json for the workflow to publish.
warpdotdev/common-skills
Run an autonomous, spec-driven development "saga" for medium-to-large features using an orchestrator agent and a fleet of worker subagents.
warpdotdev/common-skills
Generate a static interactive D3 walkthrough of a pull request.
Categories
Draft a complete documentation page for a new Warp feature from its PRODUCT.md and/or TECH.md spec. Write Feature Docs is an agent skill from warpdotdev/common-skills.md spec.
Write Feature Docs fits situations like: an engineer has written a spec and needs to produce a first-pass MDX draft for the warpdotdev/docs repo; tasks that involve Markdown.
Run `npx skills add warpdotdev/common-skills --skill write-feature-docs -a claude-code`. Or copy the skill folder (.agents/skills/write-feature-docs in warpdotdev/common-skills) into .claude/skills/write-feature-docs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add warpdotdev/common-skills --skill write-feature-docs -a codex`. Or copy the skill folder (.agents/skills/write-feature-docs in warpdotdev/common-skills) into .agents/skills/write-feature-docs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add warpdotdev/common-skills --skill write-feature-docs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-feature-docs, .gemini/skills/write-feature-docs, .github/skills/write-feature-docs and .opencode/skills/write-feature-docs in your project.
Going by SKILL.md and its folder, Write Feature Docs needs the command-line tools its instructions call (gh) and credentials named FEATURE_TOKEN. Our summary lists: A credential in FEATURE_TOKEN.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Write Feature Docs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.1k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Write Feature Docs: Markdown Article Formatter (JimLiu/baoyu-skills, 26k stars), Markitdown (ImCa0/just-laws, 781 stars), Obsidian Markdown (Atmosphere/atmosphere, 3.8k stars) and Gzh Design (isjiamu/gzh-design-skill, 3.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
warpdotdev (a GitHub organization) maintains it in warpdotdev/common-skills, which has 606 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on September 30, 2026.
Source: warpdotdev/common-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.