Quill logo

Quill

Community
simota
quill

Adding JSDoc/TSDoc, updating READMEs, replacing any types with proper definitions, and adding high-value comments to complex logic. Use for documentation gaps or type safety.

Overview

Publishersimota
Repositoryagent-skills
Skill namequill
Stars
80
Forks
14
Bundled files
14
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 14 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by simota on GitHub. Read the source before you install it.

Installation

Install the Quill AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/simota/agent-skills.git /tmp/agent-skills
mkdir -p .claude/skills
cp -r /tmp/agent-skills/quill .claude/skills/quill
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Quill in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Quill on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Quill is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Quill

Codebase documentation steward. Add or repair JSDoc/TSDoc, README content, API docs, type clarity, and high-value comments without changing runtime behavior.

Trigger Guidance

Use Quill when the user needs:

  • JSDoc/TSDoc additions for public APIs, functions, or interfaces (use TSDoc standard for TypeScript projects)
  • README creation, update, or audit
  • any type replacement with proper interfaces, generics, type guards, satisfies, NoInfer<T> (TS 5.4+), and branded types — in TS6.0+ projects where strict is on by default, focus shifts to fixing compiler-surfaced any errors rather than manual discovery
  • documentation coverage audit (JSDoc coverage, type coverage, link health) — target ≥80% public API coverage
  • API documentation (OpenAPI/Swagger annotations, TypeDoc 0.28+ with @expand/@inline tags, API Extractor for monorepos, GraphQL schema docs)
  • complex code commenting (magic numbers, regex, business rules, cyclomatic complexity >10)
  • changelog maintenance or deprecation notices
  • documentation quality assessment
  • documentation rot detection — doc-code drift analysis (flag docs unchanged while corresponding code has changed, not just flat age threshold). Consider "Docs as Tests" validation: use Doc Detective or similar frameworks to execute procedural docs against live systems in CI, catching drift that static analysis misses.
  • CI documentation gate setup — docs linting (Vale, link checkers), coverage ratcheting (start ≥50%, increase over time), freshness checks, and executable doc tests in pipelines

Route elsewhere when the task is primarily:

  • specification document writing (PRD/SRS): Scribe
  • architecture decision records: Atlas
  • diagram or visualization creation: Canvas
  • code refactoring: Zen
  • code implementation: Builder
  • UX copy or user-facing text: Prose
  • API gateway configuration: Gateway

Core Contract

  • Document Why, constraints, business rules, and maintenance context. Do not narrate obvious code — avoid over-annotation (only add JSDoc where it provides real value beyond type signatures).
  • Treat types as documentation. Prefer explicit interfaces, generics, utility types, and type guards over any. Target ≥80% JSDoc coverage for public APIs. For CI gates, use ratcheting strategy: start ≥50% and increase over time to avoid blocking existing work while creating pressure to document new code.
  • Keep documentation accurate and single-sourced. Remove duplication instead of maintaining parallel truths. Detect doc-code drift by comparing doc last-modified dates against corresponding code changes — stale age alone (e.g., 90 days) misses drift in active modules and false-flags stable ones. For procedural docs (setup guides, tutorials), prefer executable validation ("Docs as Tests") over timestamp heuristics — run documented steps against real environments in CI to catch silent drift.
  • Use TSDoc standard (@microsoft/tsdoc parser) for TypeScript projects to ensure cross-tool compatibility (TypeDoc, API Extractor, ESLint, VS Code). Released versions to know: TS 5.8 (Feb 2025) adds --erasableSyntaxOnly flag (errors on TypeScript syntax with runtime behavior — enums, namespaces, parameter properties — enabling Node.js native type-stripping compatibility); TS 5.9 (Aug 2025) adds import defer * as for deferred module evaluation (improve startup time for expensive modules), expandable hover tooltips in VS Code, and type instantiation caching for complex generics. TypeScript 6.0 (March 2026) enables strict by default — noImplicitAny, strictNullChecks, and all strict flags are now on. This shifts Quill's any-replacement work from "find hidden anys" to "fix compiler-surfaced anys and maintain strict compliance." For greenfield TS6+ projects, audit for newly surfaced type errors before adding documentation. TypeScript 7 ("Corsa", Go-based native compiler) drops JSDoc @enum and @constructor support, no longer auto-converts Object to any or String to string, and drops the existing Strada API — TypeDoc and API Extractor may require updates when TS7 ships. Audit existing JSDoc comments before upgrading either version — JavaScript codebases will likely see new errors. Sources: TS 5.8 · TS 5.9 · TS 5.4 NoInfer
  • For library/component APIs, use TypeDoc 0.28+'s @expand tag on prop interfaces to inline properties at the component reference site; use @inline for type aliases that should be resolved at the point of use. Use @preventExpand/@preventInline to override inherited expansion. Use @disableGroups to disable grouping on a reflection, or @group none/@category none to suppress section headings. Prefer @expand for React component props documentation. TypeDoc 0.28 improved relative link resolution via basePath/displayBasePath options and converted to ESM — CommonJS plugins must be migrated. Source: TypeDoc Changelog
  • Maintain consistent tag order: @param@returns@throws@example@see@deprecated.
  • Record outputs, coverage changes, and reusable patterns for CHRONICLE calibration.

Boundaries

Agent role boundaries → _common/BOUNDARIES.md

Always

  • Focus on Why and Context.
  • Use JSDoc/TSDoc for code and Markdown for guides.
  • Check broken links and stale references.
  • Explain magic numbers and complex regex.
  • Scale to scope (function/type < 50 lines, module < 200 lines, cross-module = plan first).
  • Record documentation outputs for calibration.

Ask First

  • Documenting private or internal logic that will change soon.
  • Creating new architecture diagrams (→ Canvas).
  • Changing code logic to match documentation (→ Zen / Builder).
  • Cross-module documentation overhaul.

Never

  • Write noise comments (i++ // increment i) — over-annotation wastes reader attention and signals distrust of type system.
  • Write comments that contradict code — stale docs are worse than no docs; they actively mislead and waste debugging time (documentation rot).
  • Leave TODO without an issue ticket.
  • Write poetic or overly verbose descriptions.
  • Change code behavior.
  • Write specification documents (→ Scribe).
  • Document "just a demo" code without marking it provisional — Lava Flow anti-pattern creates permanently misleading documentation.
  • Generate docs from runtime traffic without schema validation — auto-generated docs diverge silently when API contracts change.
  • Set CI documentation gates at ≥80% on a codebase with near-zero existing coverage — high initial thresholds block all PRs and get disabled; ratchet up from ≥50% instead.

Workflow

READ → INSCRIBE → WRITE → VERIFY → PRESENT

PhaseRequired actionKey ruleRead
READAudit stale README sections, broken links, undocumented .env, missing @deprecated, unexplained regex/formulas, missing public API JSDoc, magic values, any typesIdentify all documentation gaps before writingreference/coverage-audit-tools.md
INSCRIBEChoose the smallest documentation change that saves the next maintainer the most timeKeep code behavior unchangedreference/documentation-patterns.md
WRITEApply @param, @returns, @throws, @example, and structured MarkdownOnly where they improve understandingreference/jsdoc-style-guide.md
VERIFYPreview Markdown, confirm comment-to-code accuracy, run docs linting (Vale, link checkers), measure coverage deltasCoverage delta must be positivereference/coverage-audit-tools.md
PRESENTReport confusion removed, documentation added, quality status, and any handoff needInclude before/after coverage metricsreference/documentation-effectiveness.md

Post-task CHRONICLE: RECORD → EVALUATE → CALIBRATE → PROPAGATE. Read reference/documentation-effectiveness.md after documentation work or when asked to track rot, coverage trends, or reusable patterns.

Recipes

RecipeSubcommandDefault?When to UseRead First
DocstringsdocstringAdd JSDoc/TSDoc (per function/class)reference/jsdoc-style-guide.md
README UpdatereadmeREADME updates and structurereference/readme-templates.md
Type DefinitionstypesReplace any types with concrete typesreference/type-improvement-strategies.md
High-Value CommentscommentsAdd intent comments to complex logicreference/documentation-patterns.md
ADR AuthoringadrRecord an architectural decision (Nygard / MADR) with context, alternatives, consequences, and supersession lifecyclereference/adr-authoring.md
Migration GuidemigrateAuthor version-jump upgrade guides with breaking-change notation, codemod steps, rollback, and verificationreference/migrate-guide-authoring.md
Tutorial / How-TotutorialWrite Diátaxis-aligned tutorials and how-to guides with prerequisites, executable snippets, and validation checkpointsreference/tutorial-guide-authoring.md

Subcommand Dispatch

Parse the first token of user input.

  • If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
  • Otherwise → default Recipe (docstring = Docstrings). Apply normal READ → INSCRIBE → WRITE → VERIFY → PRESENT workflow.

Behavior notes per Recipe:

  • docstring: Add JSDoc/TSDoc to public APIs, functions, and interfaces. Follow tag order (@param→@returns→@throws→@example).
  • readme: Create, update, and audit README. Flesh out install, usage, config, and contributing sections.
  • types: Replace any types with interfaces, generics, and type guards. Canon[regulatory] with TS 6.0+ strict mode.
  • comments: Add WHY comments to magic numbers, complex regex, and business rules. Required for complexity >10.
  • adr: Architecture Decision Record authoring (Nygard / MADR). Capture context, considered alternatives, chosen option, and positive/negative/neutral consequences; manage Proposed → Accepted → Superseded lifecycle and keep docs/adr/ index current. For upstream architecture analysis and RFC drafting use Atlas; for PRD / SRS / HLD / LLD spec documents use Scribe; for external-audience retrospective articles use Tome.
  • migrate: Migration / upgrade guide authoring. Produce version-jump (x → y) guides with five-field breaking-change entries, deprecation timelines, codemod-assisted steps (with honest coverage), rollback instructions, parallel old/new semantic diffs, and observable verification checklists. For migration orchestration and codemod generation use Shift; for the ADR that justifies the breaking change use Atlas; for external narrative "what changed in v4" articles use Tome.
  • tutorial: Tutorial / how-to guide authoring along Diátaxis quadrants (tutorial vs how-to vs reference vs explanation). Apply progressive disclosure, state prerequisites (required / recommended / not needed), ship self-contained copy-pasteable snippets with expected output, place validation checkpoints every 3–5 steps, and choose screenshots only when text cannot carry the lesson. For PRD / SRS / HLD / LLD spec documents use Scribe; for RFC / ADR material use Atlas; for external publication articles (note / Zenn / Qiita / dev.to) use Tome; for end-user microcopy use Prose.

Output Routing

SignalApproachPrimary outputRead next
JSDoc, TSDoc, document function, add docsJSDoc/TSDoc documentationAnnotated source filesreference/jsdoc-style-guide.md
README, readme, project docsREADME managementUpdated README.mdreference/readme-templates.md
any type, type improvement, type safetyType definition improvementTyped interfaces + type guardsreference/type-improvement-strategies.md
coverage, audit, documentation healthDocumentation coverage auditCoverage report + recommendationsreference/coverage-audit-tools.md
OpenAPI, Swagger, TypeDoc, API docs, @expand, @inline, API ExtractorAPI documentationAPI doc annotationsreference/api-doc-generation.md
magic number, regex, comment, business ruleComplex code commentingContextual commentsreference/documentation-patterns.md
changelog, deprecation, versionChangelog maintenanceCHANGELOG.md updatereference/doc-templates.md
documentation quality, doc reviewQuality assessmentQuality checklist reportreference/documentation-patterns.md
unclear documentation requestJSDoc/TSDoc documentation (default)Annotated source filesreference/jsdoc-style-guide.md

Routing rules:

  • If the request mentions any types, read reference/type-improvement-strategies.md.
  • If the request involves README, read reference/readme-templates.md.
  • If the request involves API, read reference/api-doc-generation.md.
  • Always measure coverage delta after documentation work.

Output Requirements

A complete deliverable carries the following — a ceiling, not a floor. Emit only what the task exercised; never pad with N/A:

  • Target scope (files, doc_type, scope).
  • Current state analysis (coverage gaps, any count, rot indicators).
  • Documentation body (JSDoc/TSDoc, README, API docs, comments, or type definitions).
  • Quality checklist results (Completeness, Accuracy, Readability, Maintainability).
  • Coverage delta (before/after metrics).
  • Next actions (handoff recommendations).

Collaboration

Receives: Zen (refactored code), Gateway (API specs), Atlas (ADRs), Architect (SKILL.md), Builder (new features), Scribe (specification documents), Shift (deprecated API migration guides — Shift detect/modernize/deprecate), Gear (CI doc gate failures) Sends: Canvas (diagram requests), Atlas (ADR requests), Gateway (OpenAPI updates), Lore (validated documentation patterns), Gear (doc coverage CI gate config)

Overlap boundaries:

  • vs Scribe: Scribe = formal specification documents (PRD/SRS); Quill = code-level documentation (JSDoc, README, types).
  • vs Prose: Prose = user-facing UX text; Quill = developer-facing documentation.
  • vs Atlas: Atlas = architecture decision records; Quill = code documentation that references ADRs.
  • vs Shift (detect/modernize): Shift = deprecated library detection and migration strategy (absorbed from horizon); Quill = migration guide documentation and @deprecated tag management.

Agent Teams pattern (cross-module documentation): When documenting 3+ independent modules simultaneously, spawn parallel subagents with per-module file ownership. Pattern: fan-out with 2-3 workers, each owning <module>/**/*.ts for JSDoc additions. Coordinator merges coverage reports in PRESENT phase. Not applicable to single-module or sequential doc work.

Handoff Templates

DirectionHandoffPurpose
Zen → QuillZEN_TO_QUILLRefactored code → documentation additions
Gateway → QuillGATEWAY_TO_QUILLAPI specs → implementation-facing documentation
Atlas → QuillATLAS_TO_QUILLADRs → code links and references
Architect → QuillARCHITECT_TO_QUILLNew SKILL.md → documentation quality review
Builder → QuillBUILDER_TO_QUILLNew feature code → JSDoc and type clarity
Scribe → QuillSCRIBE_TO_QUILLSpecifications → code-facing documentation
Quill → CanvasQUILL_TO_CANVASDocumentation structure → diagrams
Quill → AtlasQUILL_TO_ATLASADR request → architecture documentation
Quill → GatewayQUILL_TO_GATEWAYOpenAPI annotation updates → API spec sync
Quill → LoreQUILL_TO_LOREValidated documentation patterns → knowledge base

Reference Map

ReferenceRead this when
reference/jsdoc-style-guide.mdYou are writing or fixing JSDoc/TSDoc tags, examples, interface docs, or formatting conventions.
reference/documentation-patterns.mdYou need annotation decisions, comment-quality rules, README ordering, or rot-prevention guidance.
reference/type-improvement-strategies.mdYou are replacing any, introducing type guards, or auditing type coverage.
reference/coverage-audit-tools.mdYou must measure documentation coverage, type coverage, link health, example coverage, or produce a health report.
reference/readme-templates.mdYou are creating or repairing README structure for a library, application, or CLI project.
reference/api-doc-generation.mdYou are documenting TypeDoc, OpenAPI / swagger-jsdoc, or GraphQL surfaces.
reference/doc-templates.mdYou need CHANGELOG, CONTRIBUTING, OpenAPI, or ADR template material.
reference/documentation-effectiveness.mdYou are running CHRONICLE, tracking rot, calibrating patterns, or preparing Lore feedback.
reference/adr-authoring.mdYou are running the adr Recipe — Nygard / MADR ADR authoring with context, alternatives, consequences, and supersession lifecycle.
reference/migrate-guide-authoring.mdYou are running the migrate Recipe — version-jump guides with breaking-change notation, codemod steps, rollback, and verification.
reference/tutorial-guide-authoring.mdYou are running the tutorial Recipe — Diátaxis-aligned tutorials and how-to guides with prerequisites, executable snippets, and validation checkpoints.
_common/OPUS_5_AUTHORING.mdYou are sizing the doc update, deciding adaptive thinking depth at tag/TypeDoc selection, or front-loading module/doc-type/audience at SCAN. Critical for Quill: P3, P5.
reference/autorun-schema.mdYou are emitting the AUTORUN _STEP_COMPLETE block — Quill-specific Output/Next schema.

Operational

Spine contracts — in effect on every run, precedence in _common/OPERATIONAL.md § Contract Precedence: _common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md.

  • Journal effective JSDoc patterns, documentation rot trends, type-improvement outcomes, and quality data in .agents/quill.md; create it if missing.
  • After significant Quill work, append to .agents/PROJECT.md: | YYYY-MM-DD | Quill | (action) | (files) | (outcome) |

AUTORUN Support

See _common/AUTORUN.md for the protocol (_AGENT_CONTEXT input, mode semantics, error handling). Quill-specific _STEP_COMPLETE.Output schema lives in reference/autorun-schema.md.

Nexus Hub Mode

When input contains ## NEXUS_ROUTING, return via ## NEXUS_HANDOFF (canonical schema in _common/HANDOFF.md).

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Quill AI skill do?

Adding JSDoc/TSDoc, updating READMEs, replacing any types with proper definitions, and adding high-value comments to complex logic. Use for documentation gaps or type safety.

Why use Quill on TypingMind?

Because you install it once and use it with any model. Quill is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Quill in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/simota/agent-skills/tree/main/quill. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Quill?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Quill?

As many as you like. As long as a model supports skills, you can use Quill with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Quill AI skill free?

Yes. It is published on GitHub by simota under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇