Reusable logic for updating repository documentation (README, indices, tables) with new content while preserving formatting and structure
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)