Article Links
thedaviddias/Front-End-Checklist
A skill your agent uses when auditing metadata, crawlability, structured data, or indexability related to Optimize article link density.
Enrich a blog article with cross-links to OpenCQRS documentation, abbreviation tooltips, admonitions, and content annotations.
$ npx skills add open-cqrs/opencqrs --skill enrich-article -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install open-cqrs/opencqrs enrich-article --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/open-cqrs/opencqrs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/enrich-article .claude/skills/enrich-article && 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 "enrich-article" agent skill from https://github.com/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-article into .claude/skills/enrich-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enrich-article", 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/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-articleType 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 open-cqrs/opencqrs --skill enrich-article -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install open-cqrs/opencqrs enrich-article --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-cqrs/opencqrs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/enrich-article .agents/skills/enrich-article && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "enrich-article" agent skill from https://github.com/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-article into .agents/skills/enrich-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enrich-article", 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 open-cqrs/opencqrs --skill enrich-article -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install open-cqrs/opencqrs enrich-article --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-cqrs/opencqrs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/enrich-article .cursor/skills/enrich-article && 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 "enrich-article" agent skill from https://github.com/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-article into .cursor/skills/enrich-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enrich-article", 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/open-cqrs/opencqrs.git --path .claude/skills/enrich-article--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 open-cqrs/opencqrs --skill enrich-article -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install open-cqrs/opencqrs enrich-article --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-cqrs/opencqrs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/enrich-article .gemini/skills/enrich-article && 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 "enrich-article" agent skill from https://github.com/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-article into .gemini/skills/enrich-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enrich-article", 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 open-cqrs/opencqrs enrich-articleInstalls 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 open-cqrs/opencqrs --skill enrich-article -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/open-cqrs/opencqrs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/enrich-article .github/skills/enrich-article && 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 "enrich-article" agent skill from https://github.com/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-article into .github/skills/enrich-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enrich-article", 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 open-cqrs/opencqrs --skill enrich-article -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install open-cqrs/opencqrs enrich-article --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/open-cqrs/opencqrs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/enrich-article .opencode/skills/enrich-article && 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 "enrich-article" agent skill from https://github.com/open-cqrs/opencqrs/tree/main/.claude/skills/enrich-article into .opencode/skills/enrich-article/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "enrich-article", 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.
enrich-articleEnrich a blog article with cross-links to OpenCQRS documentation, abbreviation tooltips, admonitions, and content annotations.
Enrich Article is an agent skill from open-cqrs/opencqrs. Enrich a blog article with cross-links to OpenCQRS documentation, abbreviation tooltips, admonitions, and content annotations. Fully automatic — reads the article, enriches it, and presents the result.
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Java CQRS/ES Framework for the EventSourcingDB. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 48b96be. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGlobGrepFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Enrich Article loads about 4k tokens when it runs. Until then it costs about 54 tokens; SKILL.md has 1,969 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 open-cqrs/opencqrs at commit 48b96be, republished under its Apache-2.0 licence (© open-cqrs). 1,969 words, ~4,017 tokens.
.claude/skills/enrich-article/SKILL.md (or your agent's skills folder).Enrich an existing blog article with documentation cross-links, tooltips, admonitions, and content annotations: $ARGUMENTS
Layout reference: the full artifact layout is specified in
.claude/article-pipeline.md. This skill reads the published article and the cumulativeenrichment-notes.mdfrom the matching session folder under.article-work/{date}-{slug}/. The notes file holds contributions from brainstorm, write, and grill — treat it as the layered baseline.
You are an automatic article enricher. Your job is to take a finished blog article and enhance it with mkdocs-material features that connect the article to the OpenCQRS documentation, provide readers with contextual explanations, and improve the reading experience. A key goal is to break up the wall of text — admonitions, annotations, and cross-links add visual variety and interactive elements that make the article more approachable and less monotonous. You do this without changing the article's content, structure, or wording — you only add enrichment on top.
$ARGUMENTS. If no path is provided, list files in mkdocs/docs/blog/posts/ and ask which article to enrich.slug from its frontmatter. Locate the matching session folder under .article-work/ by looking for a folder whose name ends in -{slug} (typical pattern .article-work/{YYYY-MM-DD}-{slug}/). If multiple match, pick the most recent date prefix.enrichment-notes.md from that session folder if it exists. The file is cumulative: it contains one ## From {skill} ({date}) section per upstream contributor (brainstorm, write, grill). Read all contributor sections — they layer on top of one another. Treat the union of all sections as the starting baseline for enrichment. Apply each item unless it violates the global rules in this skill. The ## From grill-article section in particular contains Open for Reflection (sidebars / annotations that surface unresolved tensions the author wanted to acknowledge) and Intentional / Defended (companion admonitions for strong claims the author chose to defend) — both are first-class enrichment input. If the file is missing entirely, fall back to enriching the article on its own — do not fail.mkdocs/mkdocs.yml to understand the full navigation structure and available documentation pages.mkdocs/includes/glossary.md to know which abbreviations already have global definitions.mkdocs/docs/reference/, mkdocs/docs/concepts/, mkdocs/docs/tutorials/, and mkdocs/docs/howto/ to build a mental map of what documentation exists and what terms map to which pages.If an enrichment-notes.md exists, use the union of all contributor sections as your baseline. Iterate through each item and translate it into the corresponding enrichment type below:
??? tip / ??? info admonitions{ .annotate } markers??? tip "Worth Considering" collapsible admonition, occasionally an annotation??? info "Why we chose this framing" collapsible admonition that acknowledges the trade-off without weakening the article's voiceIf two contributor sections name the same target (e.g. brainstorm and write both flagged the same cross-link), treat it as one enrichment but mention both in the coverage report. Brainstorm and write contributions reflect the author's pre-grill intent; grill contributions reflect what the article looked like under adversarial inspection — both are signal.
In addition, analyze the article for further enrichment opportunities using the categories below. Good and sensible enrichments beyond what the notes contain are welcome — the notes are a foundation, not a ceiling.
Identify domain-specific terms and concepts that have a corresponding documentation page. Common linkable terms include but are not limited to:
| Term | Documentation Target |
|---|---|
| Command Handler / CommandHandler | ../../reference/extension_points/command_handler/index.md |
| State Rebuilding Handler | ../../reference/extension_points/state_rebuilding_handler/index.md |
| Event Handler / EventHandler | ../../reference/extension_points/event_handler/index.md |
| Command Router / CommandRouter | ../../reference/core_components/command_router/index.md |
| Event Repository / EventRepository | ../../reference/core_components/event_repository/index.md |
| Event Handling Processor | ../../reference/core_components/event_handling_processor/index.md |
| ESDB Client | ../../reference/core_components/esdb_client/index.md |
| Event Sourcing | ../../concepts/event_sourcing/index.md |
| Events (as a concept) | ../../concepts/events/index.md |
| Upcasting / Event Upcasting | ../../concepts/upcasting/index.md |
| CQRS | ../../concepts/cqrs/index.md |
This table is a starting point, not an exhaustive list. Always check the actual documentation structure for additional matches. Use relative paths from the blog post's location to the documentation target.
Linking frequency: once per section. Link a term the first time it appears within each ## section. Do not link the same term again within the same section. If the term reappears in a later section, link it again on its first occurrence there.
Link formatting: Follow the article's existing style conventions. In articles that bold all links, use **[term](path)**. In articles without bold links, use [term](path).
Do not link terms inside code blocks, headings, or admonitions.
Add *[Term]: Explanation definitions at the very end of the article for technical terms that benefit from a mouseover tooltip. These create automatic tooltips on every occurrence of the term throughout the article.
Do not duplicate terms that already exist in mkdocs/includes/glossary.md — those are auto-appended globally. Only add article-specific terms.
Good candidates for abbreviation tooltips:
*[CommandRouter]: The core component in OpenCQRS that routes commands to their registered handlers and manages write model reconstruction)Keep definitions concise (one sentence) and include the OpenCQRS connection where relevant.
Aim for 5 to 15 abbreviation definitions per article, depending on the density of technical terms.
Insert admonitions where they add genuine value. Use them to:
!!! info "OpenCQRS Feature" — Point out that a concept discussed in the article maps directly to an OpenCQRS feature, with a brief explanation of how OpenCQRS implements it.??? tip "Deep Dive" (collapsible) — Offer additional context or nuance that would interrupt the article's flow if inline, but is valuable for curious readers.!!! warning — Highlight common pitfalls or mistakes related to the topic.Prefer collapsible admonitions (???) over static ones (!!!). Collapsible admonitions are visually appealing, invite exploration, and break up the wall of text without overwhelming the reader. They are a key tool for making the article feel interactive and layered. Use static !!! admonitions only for critical warnings or information the reader must not miss.
Placement rules:
???) can be used more generously than static ones.Admonition syntax:
!!! info "Title Here"
Content of the admonition. This should provide
additional context that connects to OpenCQRS or
deepens understanding.Use mkdocs-material content annotations to attach expandable explanations to specific terms or statements in the article. These appear as small clickable marker icons inline in the text. When the reader clicks the marker, an explanation box expands below it. This is the primary tool for adding deeper context without cluttering the reading flow.
Content annotations are already used throughout the OpenCQRS documentation (e.g., in tutorials and how-to guides). They require the attr_list and md_in_html extensions (both enabled) and the content.code.annotate theme feature (enabled).
Syntax for annotations on a paragraph:
Some text explaining a concept (1) and continuing with more details about another topic (2).
{ .annotate }
1. This is the expanded explanation for the first annotation marker. It can contain
`code`, **formatting**, links, and multiple sentences.
2. This is the second annotation. Keep it focused on one specific point.The { .annotate } attribute must be placed on its own line directly after the paragraph it applies to. The numbered list following it provides the content for each marker.
What to annotate:
Placement rules:
???) when the explanation is longer or more self-contained. Annotations work best for brief, term-specific context. Avoid clustering multiple annotations in one paragraph — aim for at most 1 per paragraph./* (1)! */ syntax instead (these are a separate feature).{ .annotate } attribute must be on its own line immediately after the paragraph (no blank line between paragraph and attribute).Annotation content guidelines:
See [Event Upcasting](../../../../concepts/upcasting/index.md) for details.Apply all enrichments to the article. Work through the article section by section:
enrichment-notes.md; then add any additional ones the standard rules surface.enrichment-notes.md first; then add any additional ones if the article still benefits from them and you are within the recommended count.{ .annotate } on paragraphs that contain terms deserving expanded explanations — starting with the anchor phrases listed in enrichment-notes.md.enrichment-notes.md plus any additional article-specific terms that warrant tooltips.Critical rules while enriching:
--- markers).<!-- more --> excerpt marker.After applying all enrichments, present a summary to the user listing:
{ .annotate }, what each annotation explainsenrichment-notes.md was present, explicitly state, per contributor section (## From brainstorm-article, ## From write-article, ## From grill-article), which items were applied and which were intentionally skipped (and why). This lets the author see how each upstream layer landed.Then save the enriched article back to the original file path using the Edit tool.
Before finalizing, verify:
## sectionmkdocs/includes/glossary.md<!-- more --> marker is preserved{ .annotate } directly after their paragraph (no blank line){ .annotate } with proper indentation (4 spaces)???) are preferred over static ones (!!!) except for critical warningsenrichment-notes.md was present, every item it contained — across all contributor sections — was either applied or explicitly skipped with a stated reason© open-cqrs, Apache-2.0. 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 .claude/skills/enrich-article of open-cqrs/opencqrs.
Open the folder on GitHubat commit 48b96be
Enrich Article 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 |
|---|---|---|---|---|---|---|
| Enrich Article this skillopen-cqrs/opencqrs | 118 | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Article Linksthedaviddias/Front-End-Checklist | 74k | — | ~425 | Automated safety check: Pass | MIT | |
| Articlethedaviddias/Front-End-Checklist | 74k | — | ~421 | Automated safety check: Pass | MIT | |
| Article Writingaffaan-m/ECC | 277k | 3 repos | ~295 | Automated safety check: Pass | MIT | |
| Article Writingaffaan-m/ECC | 276k | — | ~385 | Automated safety check: Pass | MIT | |
| SEO Aeo Blog Writersickn33/agentic-awesome-skills | 47k | 1 repos | ~1.5k | Automated safety check: Pass | MIT |
thedaviddias/Front-End-Checklist
A skill your agent uses when auditing metadata, crawlability, structured data, or indexability related to Optimize article link density.
thedaviddias/Front-End-Checklist
A skill your agent uses when auditing metadata, crawlability, structured data, or indexability related to Implement valid Article structured data.
affaan-m/ECC
根据提供的示例或品牌指导,以独特的语气撰写文章、指南、博客帖子、教程、新闻简报等长篇内容。当用户需要超过一段的精致书面内容时使用,尤其是当语气一致性、结构和可信度至关重要时。
affaan-m/ECC
記事、ガイド、ブログ投稿、チュートリアル、ニュースレター号、その他の長文コンテンツを、提供された例またはブランドガイダンスから派生した独特の声で作成します。ユーザーが段落より長いポーランド済みの書き込みコンテンツを望む場合、特に声の一貫性、構造、および信頼性が重要な場合に使用します。
sickn33/agentic-awesome-skills
Writes search-intent-led long-form articles with answer-first structure, FAQ coverage, internal links, and conversion paths for SEO and AEO.
AgriciDaniel/claude-blog
Full-lifecycle blog engine with 31 sub-skills, 12 templates, 100-point scoring, and 5 agents.
open-cqrs/opencqrs
Write well-structured professional articles. An agent skill from open-cqrs/opencqrs.
open-cqrs/opencqrs
Generate the release announcement package for a finished blog article — Google-Sheet row fields plus three LinkedIn-post variants — and print everything to the terminal as copy-ready templates.
open-cqrs/opencqrs
Develop a blog article topic through a guided conversation. An agent skill from open-cqrs/opencqrs.
open-cqrs/opencqrs
Critically inspect a written article before enrichment — verify codebase claims with real tool lookups, find internal contradictions, and (for argumentative articles) sparr with the author about…
open-cqrs/opencqrs
Cross-article topic prospecting. An agent skill from open-cqrs/opencqrs.
open-cqrs/opencqrs
Exploratory technical dialogue about a topic with an open outcome.
Enrich a blog article with cross-links to OpenCQRS documentation, abbreviation tooltips, admonitions, and content annotations. Enrich Article is an agent skill from open-cqrs/opencqrs. Enrich a blog article with cross-links to OpenCQRS documentation, abbreviation tooltips, admonitions, and content annotations.
Run `npx skills add open-cqrs/opencqrs --skill enrich-article -a claude-code`. Or copy the skill folder (.claude/skills/enrich-article in open-cqrs/opencqrs) into .claude/skills/enrich-article in your project. Claude Code loads it when a task matches its description.
Run `npx skills add open-cqrs/opencqrs --skill enrich-article -a codex`. Or copy the skill folder (.claude/skills/enrich-article in open-cqrs/opencqrs) into .agents/skills/enrich-article 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 open-cqrs/opencqrs --skill enrich-article -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/enrich-article, .gemini/skills/enrich-article, .github/skills/enrich-article and .opencode/skills/enrich-article in your project.
SKILL.md names no scripts, command-line tools or credentials: Enrich Article is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep.
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.
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.
Enrich Article is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k 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 Enrich Article: Article Links (thedaviddias/Front-End-Checklist, 74k stars), Article (thedaviddias/Front-End-Checklist, 74k stars), Article Writing (affaan-m/ECC, 277k stars) and Article Writing (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
open-cqrs (a GitHub organization) maintains it in open-cqrs/opencqrs, which has 118 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on September 28, 2026.
Source: open-cqrs/opencqrs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.