Agent skill

Wordgard

by bangle-io in bangle-io/bangle-io

Write idiomatic Wordgard editor code (schema elements, extensions, commands, decorations, markdown specs) for the editor-w stack.

AGPL-3.0Auto-check passedKnowledge Management

Install Wordgard

skills CLI
$ npx skills add bangle-io/bangle-io --skill wordgard -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bangle-io/bangle-io wordgard --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/bangle-io/bangle-io.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/wordgard .claude/skills/wordgard && rm -rf skills-src

Use ~/.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/

Facts

Skill name
wordgard
GitHub stars
1.2k
Token cost
~1.5k tokens
SKILL.md length
688 words
Files
14 (incl. references)
Skills in repo
5
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Write idiomatic Wordgard editor code (schema elements, extensions, commands, decorations, markdown specs) for the editor-w stack.

  • Works in 4 steps: Read references/guide.md (the system… → Coming from a ProseMirror mindset, read → For exact signatures, read the installed… → …
  • Working on wordgard
  • SKILL.md covers Before writing any Wordgard code, Concept model (30 seconds), Where does this behavior go? and Anti-patterns (PM habits to…, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Wordgard is an agent skill from bangle-io/bangle-io. Write idiomatic Wordgard editor code (schema elements, extensions, commands, decorations, markdown specs) for the editor-w stack. Use whenever working on wordgard, @bangle.io/wordgard-utils, @bangle.io/wordgard-markdown, or packages/core/editor-w, or when reviewing such code.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including reference files (for example `references/ATTRIBUTION.md`, `references/CHANGELOG.md` and `references/README.md`).

It sits in Knowledge Management, covering Markdown. The repository describes itself as: A web only WYSIWYG note taking app that saves notes locally in markdown format. v2: https://app.bangle.io/. The licence is AGPL-3.0.

When your agent uses it

  • Working on wordgard
  • @bangle.io/wordgard-utils
  • @bangle.io/wordgard-markdown
  • Packages/core/editor-w

Example prompts

  • “/wordgard”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Read references/guide.md (the system guide — the authoritative mental
  2. Coming from a ProseMirror mindset, read
  3. For exact signatures, read the installed typings
  4. references/examples/*.md show working end-to-end code (schema

What it can do on your machine

Read from SKILL.md and the folder at commit c3310c5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wordgard loads about 1.5k tokens when it runs, and up to ~33k if it reads all its reference files. Until then it costs about 71 tokens; SKILL.md has 688 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~33k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from bangle-io/bangle-io at commit c3310c5, republished under its AGPL-3.0 licence (© bangle-io). 688 words, ~1,543 tokens.

Download SKILL.mdSave it as .claude/skills/wordgard/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.
name
wordgard
description
Write idiomatic Wordgard editor code (schema elements, extensions, commands, decorations, markdown specs) for the editor-w stack. Use whenever working on wordgard, @bangle.io/wordgard-utils, @bangle.io/wordgard-markdown, or packages/core/editor-w, or when reviewing such code.

Wordgard

Wordgard (https://wordgard.net, by Marijn Haverbeke) is a semantic rich text editor system — spiritually ProseMirror v2 with CodeMirror 6's extension architecture. It was released in 2026-07 and is not in model training data: never guess its API from ProseMirror or CodeMirror memory.

Before writing any Wordgard code

  1. Read references/guide.md (the system guide — the authoritative mental model).
  2. Coming from a ProseMirror mindset, read references/migrating-from-prosemirror.md.
  3. For exact signatures, read the installed typings: node_modules/wordgard/dist/*.d.ts (doc, types, schema, table, state, editor, command, history, collab, phrases). These have full doc comments and are the API reference. Grep them; do not invent methods.
  4. references/examples/*.md show working end-to-end code (schema definition, transactions, dynamic config, styling, translations).

See references/ATTRIBUTION.md for provenance; refresh copies on version bumps and read references/CHANGELOG.md when upgrading — Wordgard is 0.x and breaks compatibility deliberately.

Concept model (30 seconds)

  • Document = immutable tree of plots (nodes with content) and leaves (no content; text is a leaf whose param is the string). A node's markup = its tag: {type, param, marks}. One param value replaces PM's attrs; optional/extra attributes are modeled as marks (e.g. image src is the leaf param, alt text is a mark).
  • Nodes are value objects: no parent pointers, no identity, no mutation. Refer to positions by document offset; resolve with doc.resolve(pos) (Pos), map across changes with ChangeSet.mapPos.
  • Changes are ChangeSets (delta over the old doc). Multiple changes in one spec are all addressed in original coordinates — no offset compensation. Insertions are token arrays (nodes, plot tags to open, Plot.End to close). Use fit/{correct: ...} when validity is unsure.
  • Transactions are immutable, created from a spec object ({changes, selection, userEvent, scrollIntoView, effects}); metadata is annotations, state-directed payloads are effects (mappable). wg.dispatch(spec); new state at tr.state.
  • Configuration is a tree of extensions with precedence (prec). Extension points are facets; persistent extension state lives in state fields (reducer over transactions); DOM-integrated behavior is a Wordgard.Plugin; runtime feature toggling uses compartments.
  • Schemas compose from reusable elements (Plot.define, Plot.Type.define<P>, Leaf.Type.define<P>, Mark.define, Mark.Type.define<P>, Schema.Override). Content rules are deliberately loose (allowed-set + may-be-empty); richer invariants belong in corrections (Correction.onChildList/onContent/onMarks), not the schema.
  • Commands are (editor, param?) => boolean | TransactionSpec, and act as identities that extensions can override via Command.handler by precedence. Key bindings and input rules are extension values themselves.
  • Rendering: DOM shapes via Elt; decorations are tag-level (all nodes of a type — this replaces NodeViews), point (widget/attributes/shape override/wrapper at a position), or range (attributes/wrapper over a span), sourced from facets, stored in PointSet/RangeSet and mapped in state fields. Styling via Wordgard.styles/Wordgard.theme (CSS-in-JS, &dark/&light).
  • DOM updates flush on requestAnimationFrame. Dispatch one coherent transaction, not a loop of small ones. In plugins, use scheduleDOMRead/scheduleDOMWrite.
Show full SKILL.md (255 more words)Show less

Where does this behavior go?

NeedUse
Expose a config/extension pointFacet
State that survives transactionsState field (+ effects to talk to it)
Enforce document invariants / repairCorrection
A user editing actionCommand (spec-returning when possible)
Change behavior of an existing actionCommand.handler with precedence
Custom node DOM / widgetsShape + tag/point/range decorations (never NodeViews — they don't exist)
Overlay UI (tooltips, panels, menus)Built-in Panel/Tooltip/Dialog/Menu facets first; custom Wordgard.Plugin second
Feature on/off at runtimeCompartment reconfigure
Turn user typing into structureInput rules / key bindings in the extension bundle

Anti-patterns (PM habits to drop)

  • Multiple attrs on a node → one param + marks.
  • Content expressions / strict schema constraints → loose schema + corrections.
  • tr.setMeta / plugin keys → annotations, effects, facets, fields.
  • String node-type names in APIs → pass the type/tag objects.
  • Node identity via object reference or stored {from,to} → offsets mapped through ChangeSets.
  • Imperative DOM tweaks inside the editor → decorations or shapes, always.

Rules in this repo

  • Import Wordgard only through @bangle.io/wordgard-utils re-exports (the version-churn chokepoint). App code never imports wordgard/* directly.
  • A feature ships as one extension bundle: schema element(s) + commands + key bindings + input rules + menu items + styles, plus its MarkdownSpec in @bangle.io/wordgard-markdown and golden-corpus fixtures proving markdown round-trip (repo invariant: markdown fidelity).
  • @bangle.io/wordgard-markdown must stay editor-free (headless parse/ serialize); @bangle.io/wordgard-utils must stay bangle-free.
  • editor-w may never write a note that fails the parse→serialize round-trip gate. Never "normalize" user markdown as a side effect of loading.
  • User-visible strings go through the t translations bridge to PhraseSets; don't hardcode UI text.
  • See plans/011-wordgard-editor-w-migration.md for the architecture, package boundaries, and current milestone.

© bangle-io, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 13 other files (references) in .claude/skills/wordgard of bangle-io/bangle-io.

  • SKILL.md
  • references/ATTRIBUTION.md
  • references/CHANGELOG.md
  • references/README.md
  • references/examples/basic.md
  • references/examples/blame.md
  • references/examples/config.md
  • references/examples/schema.md
  • references/examples/style.md
  • references/examples/transaction.md
  • references/examples/translate.md
  • references/faq.md
  • references/guide.md
  • references/migrating-from-prosemirror.md

Open the folder on GitHubat commit c3310c5

Compare with similar skills

Wordgard 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.

Wordgard compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wordgard this skillbangle-io/bangle-io1.2k—~1.5kAutomated safety check: PassAGPL-3.0
Open Knowledge Discoveryinkeep/open-knowledge4.4k1 repos~2kAutomated safety check: PassGPL-3.0
Outlinesanjay3290/ai-skills431—~1.1kAutomated safety check: NotesApache-2.0
Confluence To Markdowniurykrieger/claude-bedrock1051 repos~2.8kAutomated safety check: NotesMIT
Baoyu URL To Markdownsdyckjq-lab/llm-wiki-skill2.5k3 repos~3.2kAutomated safety check: PassNone
X to Markdown ConverterJimLiu/baoyu-skills26k4 repos~1.8kAutomated safety check: WarnMIT

Similar skills

  • Open Knowledge Discovery

    inkeep/open-knowledge

    Read when the user asks what OpenKnowledge is, wants to install it on a repository, wants to open or preview a single markdown file that is not part of an OpenKnowledge project, wants to share an…

    4.4k GitHub starsUsed in 1 repo~2k tokens
    Knowledge ManagementAuto-check passed
  • Outline

    sanjay3290/ai-skills

    Search, read, and manage Outline wiki documents. An agent skill from sanjay3290/ai-skills.

    431 GitHub stars~1.1k tokensUpdated 28 days ago
    Knowledge ManagementAuto-check: notes
  • Confluence To Markdown

    iurykrieger/claude-bedrock

    Internal fetcher module for Confluence pages. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~2.8k tokens
    Knowledge ManagementAuto-check: notes
  • Baoyu URL To Markdown

    sdyckjq-lab/llm-wiki-skill

    Fetch any URL and convert to markdown using Chrome CDP. An agent skill from sdyckjq-lab/llm-wiki-skill.

    2.5k GitHub starsUsed in 3 repos~3.2k tokens
    Knowledge ManagementAuto-check passed
  • X to Markdown Converter

    JimLiu/baoyu-skills

    Saves tweets, threads and X Articles as Markdown files with YAML front matter, using an unofficial API that asks for your consent first.

    26k GitHub starsUsed in 4 repos~1.8k tokens
    Knowledge ManagementAuto-check: warnings
  • Qmd

    SAP/e-mobility-charging-stations-simulator

    Official

    Search local markdown knowledge bases, notes, docs, and wikis with QMD.

    227 GitHub starsUsed in 1 repo~2.8k tokens
    Knowledge ManagementAuto-check passed

More from bangle-io/bangle-io

  • Bangle Project Operator

    bangle-io/bangle-io

    Keep the Bangle 2 GitHub Project aligned with the bangle-io repository.

    1.2k GitHub stars~1.4k tokensUpdated 3 days ago
    Auto-check passed
  • Bangle Desktop Release

    bangle-io/bangle-io

    Build, test, package, and release the Bangle.io Electron desktop app.

    1.2k GitHub stars~297 tokensUpdated 3 days ago
    Auto-check passed
  • Bangle Followup Operator

    bangle-io/bangle-io

    Operate recurring Bangle.io agent follow-ups after a thread has already started.

    1.2k GitHub stars~991 tokensUpdated 3 days ago
    Auto-check passed
  • Perform an unusually strict code-quality audit focused on structural simplification, maintainability, abstraction quality, file growth, branching complexity, type boundaries, architectural…

    1.2k GitHub stars~1.4k tokensUpdated 3 days ago
    Auto-check passed

Questions about Wordgard

What does Wordgard do?

Write idiomatic Wordgard editor code (schema elements, extensions, commands, decorations, markdown specs) for the editor-w stack. Wordgard is an agent skill from bangle-io/bangle-io. Write idiomatic Wordgard editor code (schema elements, extensions, commands, decorations, markdown specs) for the editor-w stack.

When should I use Wordgard?

Wordgard fits situations like: working on wordgard; @bangle.io/wordgard-utils; @bangle.io/wordgard-markdown; packages/core/editor-w.

How do I install Wordgard in Claude Code?

Run `npx skills add bangle-io/bangle-io --skill wordgard -a claude-code`. Or copy the skill folder (.claude/skills/wordgard in bangle-io/bangle-io) into .claude/skills/wordgard in your project. Claude Code loads it when a task matches its description.

How do I install Wordgard in Codex?

Run `npx skills add bangle-io/bangle-io --skill wordgard -a codex`. Or copy the skill folder (.claude/skills/wordgard in bangle-io/bangle-io) into .agents/skills/wordgard in your project. Codex loads it when a task matches its description.

Can I use Wordgard in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bangle-io/bangle-io --skill wordgard -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wordgard, .gemini/skills/wordgard, .github/skills/wordgard and .opencode/skills/wordgard in your project.

What does Wordgard need to run?

SKILL.md names no scripts, command-line tools or credentials: Wordgard is instructions for the agent only.

Does Wordgard access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Wordgard safe to install?

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.

What licence does Wordgard use?

Wordgard is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wordgard use?

About 1.5k tokens (SKILL.md is roughly 6.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 32k tokens, read only when the agent opens those files.

What are the alternatives to Wordgard?

Skills that share tags, products or a category with Wordgard: Open Knowledge Discovery (inkeep/open-knowledge, 4.4k stars), Outline (sanjay3290/ai-skills, 431 stars), Confluence To Markdown (iurykrieger/claude-bedrock, 105 stars) and Baoyu URL To Markdown (sdyckjq-lab/llm-wiki-skill, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wordgard?

bangle-io (a GitHub organization) maintains it in bangle-io/bangle-io, which has 1,233 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 5, 2026.

Source: bangle-io/bangle-io on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.