skills/documentation-update/SKILL.md
Reusable logic for updating repository documentation (README, indices, tables) with new content while preserving formatting and structure
npx skillsauth add enuno/claude-command-and-control documentation-updateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides systematic approaches for:
Identify Table Structure:
| Column1 | Column2 | Column3 |
|---------|---------|---------|
| Value1 | Value2 | Value3 |
Steps:
Example - Adding Skill to README:
Original:
| Skill | Purpose | Use When |
|-------|---------|----------|
| **skill-creator** | Creates new skills | Building new automation |
| **skill-orchestrator** | Coordinates multiple skills | Complex workflows |
New Entry Data:
Name: using-git-worktrees
Purpose: Isolated workspace management
Use When: Feature work needing isolation
Updated (alphabetically inserted):
| Skill | Purpose | Use When |
|-------|---------|----------|
| **skill-creator** | Creates new skills | Building new automation |
| **skill-orchestrator** | Coordinates multiple skills | Complex workflows |
| **using-git-worktrees** | Isolated workspace management | Feature work needing isolation |
Algorithm:
function insertAlphabetically(table, newEntry):
rows = table.split("\n")
headerRow = rows[0]
separatorRow = rows[1]
dataRows = rows[2..]
// Extract first column values for sorting
existingEntries = dataRows.map(row => extractFirstColumn(row))
// Find insertion point
insertionIndex = 0
for i, entry in existingEntries:
if newEntry < entry:
insertionIndex = i
break
else:
insertionIndex = i + 1
// Insert new row
dataRows.insert(insertionIndex, formatRow(newEntry))
// Rebuild table
return [headerRow, separatorRow, ...dataRows].join("\n")
For tables organized by category (not alphabetical):
Example - Command Categories:
#### Core Workflow Commands
- **start-session.md** - Initialize development session
- **close-session.md** - End session with summary
#### Quality Assurance Commands
- **test-all.md** - Execute test suites
- **lint-fixes.md** - Auto-fix style issues
Insertion Logic:
Find and Update Links:
Old: See [Document 07](docs/best-practices/07-Quick-Reference.md)
New: See [Document 07](docs/best-practices/07-Quick-Reference.md) and [Document 08](docs/best-practices/08-Skills-Guide.md)
Validation:
# Check link target exists
!test -f docs/best-practices/08-Skills-Guide.md && echo "✅ Valid"
For skills/README.md:
# Skills Directory
## Available Skills
[Auto-generated table from skills/*/SKILL.md files]
| Skill | Description | Category |
|-------|-------------|----------|
[Rows auto-populated from frontmatter]
## Usage
[Standard usage instructions]
## Creating Skills
[Link to templates and guides]
Generation Logic:
function generateSkillsIndex():
skills = findAll("skills/*/SKILL.md")
table = createTable(["Skill", "Description", "Category"])
for skill in skills:
frontmatter = extractFrontmatter(skill)
name = frontmatter.name
description = frontmatter.description
category = determineCategory(skill)
table.addRow([name, description, category])
table.sortAlphabetically()
return table
Detect Style:
- Bold pattern: **text** or __text__
- Link pattern: [text](url) or [text][ref]
- List style: - item or * item or 1. item
- Code blocks: ```lang or ~~~lang
- Headers: # H1 or ## H2 (ATX style)
Apply Consistently:
# If existing entries use:
| **bold-name** | Description |
# New entry must use:
| **new-entry** | Description |
# NOT:
| new-entry | Description |
Preserve alignment indicators:
| Left | Center | Right |
|:-----|:------:|------:|
| L1 | C1 | R1 |
| L2 | C2 | R2 |
New row must match:
| New | Data | 123 |
function isDuplicate(table, newEntry):
existingEntries = extractEntriesFromTable(table)
for entry in existingEntries:
if entry.name == newEntry.name:
return true
if entry.path == newEntry.path:
return true
return false
Action on Duplicate:
Input:
skills = [
{name: "content-research-writer", purpose: "Writing assistance", useWhen: "Writing articles"},
{name: "root-cause-tracing", purpose: "Systematic debugging", useWhen: "Tracing bugs"},
{name: "sharing-skills", purpose: "Contribute skills upstream", useWhen: "Sharing patterns"},
{name: "subagent-driven-development", purpose: "Execute plans with subagents", useWhen: "Plan execution"},
{name: "using-git-worktrees", purpose: "Isolated workspace management", useWhen: "Feature isolation"},
{name: "using-superpowers", purpose: "Meta-skill for skill discovery", useWhen: "Starting conversations"}
]
Process:
Output Report:
### README.md Updates
- ✅ Added 6 skills to Pre-Built Skills table
- ✅ Alphabetical order maintained
- ✅ No duplicates created
- ✅ Table format preserved
- ✅ All links validated
Input: List of all skills in skills/*/SKILL.md
Process:
skills/ directoryOutput: Comprehensive index file with categorized skill tables
Input: New command integration-process.md
Process:
# Check table structure
!grep -A 5 "| Skill | Purpose |" README.md | head -10
# Verify link targets
!for link in $(grep -o "\](.*\.md)" README.md | tr -d ']()'); do
test -f "$link" || echo "Broken: $link"
done
# Count table rows
!grep -c "|.*|.*|" README.md
Error: Table has inconsistent column counts
Action: Report error, do not modify
Fix: Manually correct table structure first
Error: Permission denied writing to README.md
Action: Log error, skip update
Fallback: Create pending-updates.md with changes
Warning: Skill "using-git-worktrees" already in table
Action: Skip insertion, note in report
Info: Entry exists at line 156
/integration-update-docs - Primary documentation updater/maintenance-plan-update - DEVELOPMENT_PLAN.md updates# In integration-update-docs command
After integration:
1. Load integration report
2. For each integrated file:
- Use documentation-update skill
- Update appropriate doc files
- Validate changes
3. Generate doc update report
Test with:
Expected behavior:
1.0 (2025-11-23)
Skill Status: Production Ready Integration: Used by /integration-update-docs Dependencies: None (standalone logic)
tools
MemPalace local-first AI memory system. Use when setting up persistent memory for Claude Code sessions, mining project files or conversation transcripts, querying past context, configuring MCP tools, managing the knowledge graph, or troubleshooting palace operations.
tools
LangSmith Python SDK — trace, evaluate, and monitor LLM applications. Covers @traceable decorator, trace context manager, Client API, evaluate() / aevaluate(), comparative evaluation, custom evaluators, dataset management, prompt caching, ASGI middleware, and pytest plugin.
development
LangGraph (Python) — build stateful, controllable agent graphs with checkpointing, streaming, persistence, interrupts, fault tolerance, and durable execution. Covers both Graph API (StateGraph) and Functional API (@entrypoint/@task).
development
LangGraph Graph API (Python) — build explicit DAG agent workflows with StateGraph, typed state, nodes, edges, Command routing, Send fan-out, checkpointers, interrupts, and streaming. Use when you need explicit control flow and graph topology.