doc-updates
Updates documentation after code changes with quality gates, slop detection, and accuracy checks Skill: doc-updates Owner: athola Summary: Updates documentation after code changes with quality gates, slop detection, and accuracy checks Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:20:16.228Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:40:20.663Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:57:14.019Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:05:10.289Z | user Release v1.9.14 v1.9.13 | 20
Rank
62
Safety
84
Downloads
1.5k
Updated
Oct 10, 2026
Version
1.9.19
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.5K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.9.19release · observed Aug 26, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-sanctum-doc-updates- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-doc-updates/snapshot"
Documentation
CLAWHUB
145,309 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: doc-updates
description: |
Updates documentation after code changes with quality gates, slop detection, and accuracy checks
version: 1.9.8
triggers:
- documentation
- readme
- adr
- docstrings
- writing
- consolidation
- debloat
- code changes require corresponding doc updates
metadata: {"openclaw": {"homepage": "https://github.com/athola/claude-night-market/tree/master/plugins/sanctum", "emoji": "\ud83e\udd9e", "requires": {"config": ["night-market.sanctum:shared", "night-market.sanctum:git-workspace-review", "night-market.imbue:proof-of-work", "night-market.scribe:slop-detector", "night-market.scribe:doc-generator"]}}}
source: claude-night-market
source_plugin: sanctum
---
> **Night Market Skill** — ported from [claude-night-market/sanctum](https://github.com/athola/claude-night-market/tree/master/plugins/sanctum). For the full experience with agents, hooks, and commands, install the Claude Code plugin.
## Table of Contents
- [When to Use](#when-to-use)
- [Required TodoWrite Items](#required-todowrite-items)
- [Step 1: Collect Context](#step-1-collect-context-context-collected)
- [Step 2: Identify Targets](#step-2-identify-targets-targets-identified)
- [Step 2.5: Check for Consolidation](#step-25-check-for-consolidation-consolidation-checked)
- [Step 3: Apply Edits](#step-3-apply-edits-edits-applied)
- [Step 4: Enforce Guidelines](#step-4-enforce-guidelines-guidelines-verified)
- [Step 4.25: AI Slop Detection](#step-425-ai-slop-detection-slop-scanned)
- [Step 4.75: Sync Capabilities Documentation](#step-475-sync-capabilities-documentation-capabilities-synced)
- [Step 5: Verify Accuracy](#step-5-verify-accuracy-accuracy-verified)
- [Step 6: Preview Changes](#step-6-preview-changes-preview)
- [Exit Criteria](#exit-criteria)
- [Flags](#flags)
# Documentation Update Workflow
## When To Use
Use this skill when code changes require updates to the README, plans, wikis, or docstrings. Run `Skill(sanctum:git-workspace-review)` first to capture the change context.
### System Capabilities
The documentation update workflow includes several specialized functions. It identifies redundancy through consolidation detection and enforces directory-specific style rules, with strict limits for `docs/` and more lenient ones for the `book/` directory. The system also verifies the accuracy of version numbers and component counts and integrates with the LSP for semantic documentation verification in supported versions of Claude Code.
## When NOT To Use
- README-specific updates - use update-readme instead
- Complex multi-file consolidation - use doc-consolidation
## Required TodoWrite Items
1. `doc-updates:context-collected` - Git context + CHANGELOG review
2. `doc-updates:targets-identified`
3. `doc-updates:consolidation-checked` (skippable)
4. `doc-updates:edits-applied`
5. `doc-updates:guidelines-verified`
6. `doc-updates:slop-scanned` - AI marker detection via scribe
7. `doc-updates:plugins-synced` - plugin.json ↔ disk audi_meta.json
{
"ownerId": "kn7d107jg9jv602h9ytsegydq184a42s",
"slug": "nm-sanctum-doc-updates",
"version": "1.9.19",
"publishedAt": 1787750416228
}modules/accuracy-scanning.md
# Accuracy Scanning Module
Validate documentation claims against actual codebase state. Runs as Phase 5.5 before preview to catch stale version numbers, outdated counts, and broken references.
## Scan Types
### 1. Version Number Validation
Compares version references in documentation against `plugin.json` files.
**Patterns to detect:**
- `v1.2.3`, `version: 1.2.3`
- `Plugin Name (v1.2.3)`, `Plugin Name v1.2.3`
- Table cells with version numbers
**Validation:**
```bash
# Extract actual versions
for plugin in plugins/*/.claude-plugin/plugin.json; do
jq -r '.name + " " + .version' "$plugin"
done
# Sample output:
# abstract 1.0.5
# sanctum 1.0.6
# scry 1.1.0
```
**Warning format:**
```markdown
| File | Claimed | Actual | Action |
|------|---------|--------|--------|
| docs/api-overview.md | abstract v2.1.0 | 1.0.5 | Update version |
| README.md | sanctum v3.0.0 | 1.0.6 | Update version |
```
### 2. Plugin Count Validation
Verifies claims like "13 plugins" against actual directory count.
**Patterns to detect:**
- "N plugins", "contains N plugins"
- Table rows claiming to list all plugins
**Validation:**
```bash
# Count plugin directories with valid plugin.json
ls -d plugins/*/.claude-plugin/plugin.json 2>/dev/null | wc -l
```
### 3. Skill/Command Count Validation
Verifies per-plugin statistics.
**Patterns to detect:**
- "X skills", "Y commands", "Z agents"
- API inventory tables
**Validation:**
```bash
# Count skills for a plugin
ls -d plugins/sanctum/skills/*/SKILL.md 2>/dev/null | wc -l
# Count commands
ls plugins/sanctum/commands/*.md 2>/dev/null | wc -l
# Count agents
ls plugins/sanctum/agents/*.md 2>/dev/null | wc -l
```
### 4. File/Path Reference Validation
Verifies that referenced paths exist.
**Patterns to detect:**
- Backtick paths: `` `plugins/sanctum/skills/doc-updates/SKILL.md` ``
- Relative paths in links: `[link](./modules/foo.md)`
- Configuration examples with paths
**Validation:**
```bash
# Check if path exists
test -e "$path" && echo "EXISTS" || echo "MISSING"
```
## Scan Algorithm
```python
def scan_for_accuracy(file_path: str, content: str) -> list[AccuracyWarning]:
warnings = []
# Load current plugin versions
actual_versions = load_plugin_versions()
# Find version references
version_pattern = r'(\w+)[\s\(]v?(\d+\.\d+\.\d+)'
for match in re.finditer(version_pattern, content):
plugin_name = match.group(1).lower()
claimed_version = match.group(2)
if plugin_name in actual_versions:
actual = actual_versions[plugin_name]
if claimed_version != actual:
warnings.append({
'type': 'version_mismatch',
'plugin': plugin_name,
'claimed': claimed_version,
'actual': actual,
'line': get_line_number(content, match.start())
})
# Find count claims
count_pattern = r'(\d+)\s+(plugins?|skills?|commands?|agents?)'
modules/adr-patterns.md
# Architecture Decision Record (ADR) Patterns
## ADR Template Structure
Every ADR must follow a consistent Markdown template with these required sections:
### Required Sections
1. **Title**
- Format: `ADR-{number}: {Brief Decision Description}`
- Example: `ADR-001: Use PostgreSQL for primary data store`
2. **Status**
- One of: Proposed, Accepted, Deprecated, Superseded
- Include date when status changed
3. **Context**
- Forces driving the decision
- Constraints that must be satisfied
- Prior art or existing patterns
- Why this decision is needed now
4. **Decision**
- The chosen option with clear justification
- Specific implementation approach
- Rationale for why this solves the context
5. **Alternatives Considered**
- Other options evaluated
- Why each alternative was rejected
- Trade-offs between options
6. **Consequences**
- Positive outcomes expected
- Negative outcomes or limitations
- Impact on other components or teams
- Future implications
7. **Metadata**
- Author(s)
- Date created
- Approvers (if required)
- Links to related documents
## Status Flow
ADRs follow this lifecycle:
```
Proposed → Accepted → [Deprecated | Superseded]
```
- **Proposed**: Draft ADR under review
- **Accepted**: Decision approved and implemented
- **Deprecated**: No longer recommended but not replaced
- **Superseded**: Replaced by a newer ADR (reference the new ADR number)
## Immutability Rules
ADRs are treated like code:
1. **Draft during planning**: Create ADR before implementation begins
2. **Review via pull request**: ADRs go through same review process as code
3. **Immutable once accepted**: Never edit an accepted ADR's decision
4. **Supersede, don't modify**: Create new ADR to change direction
## Superseding an ADR
When replacing an existing decision:
1. Create new ADR with next sequential number
2. Reference the superseded ADR number in context
3. Explain what changed and why the shift occurred
4. Update old ADR status to "Superseded by ADR-{new-number}"
5. Add link in old ADR to new record
## Location Conventions
ADRs typically are in one of these locations:
- `wiki/architecture/`
- `docs/adr/`
- `architecture/decisions/`
Check project structure to determine the established location before creating ADRs.
## Best Practices
### Keep Focused
- One architectural decision per ADR
- Maximum 1-2 pages in length
- Don't combine multiple decisions
### Maintain Traceability
- Link to requirements documents
- Reference design documents
- Connect to related ADRs
- Include issue/ticket numbers
### Write Grounded Content
- Reference specific technologies, tools, or approaches
- Include concrete examples where helpful
- Avoid abstract language or filler
- Use imperative mood for clarity
### Review Checklist
- [ ] Single focused decision
- [ ] All required sections present
- [ ] Alternatives documented with rationale
- [ ] Consequences (both positive and negative) identified
- [ modules/capabilities-sync.md
# Capabilities Sync Module
Synchronizes plugin.json registrations with capabilities reference documentation.
## Purpose
Detects drift between:
- **Source of truth**: `plugins/*/.claude-plugin/plugin.json` files
- **Documentation**: `book/src/reference/capabilities-reference.md` and related files
## When Loaded
This module is loaded during Step 4.75 (after plugins-synced, before accuracy-verified).
## Sync Targets
| Source | Documentation Target |
|--------|---------------------|
| `plugin.json.skills[]` | `book/src/reference/capabilities-reference.md` (Skills table) |
| `plugin.json.commands[]` | `book/src/reference/capabilities-reference.md` (Commands table) |
| `plugin.json.agents[]` | `book/src/reference/capabilities-reference.md` (Agents table) |
| `hooks/hooks.json` | `book/src/reference/capabilities-reference.md` (Hooks table) |
| Plugin existence | `book/src/plugins/{plugin}.md` |
| Plugin in layer | `book/src/plugins/{layer}-layer.md` |
| Plugin in SUMMARY | `book/src/SUMMARY.md` |
## Detection Script
```bash
#!/bin/bash
# capabilities-sync-check.sh
# Run from repo root
echo "=== Capabilities Sync Report ==="
echo ""
# Temporary files for comparison
REGISTERED_SKILLS=$(mktemp)
DOCUMENTED_SKILLS=$(mktemp)
REGISTERED_COMMANDS=$(mktemp)
DOCUMENTED_COMMANDS=$(mktemp)
REGISTERED_AGENTS=$(mktemp)
DOCUMENTED_AGENTS=$(mktemp)
# Extract registered skills from plugin.json files
for pjson in plugins/*/.claude-plugin/plugin.json; do
plugin=$(basename $(dirname $(dirname "$pjson")))
jq -r --arg p "$plugin" '.skills[]? | sub("^\\./skills/"; "") | "\($p):\(.)"' "$pjson" 2>/dev/null
done | sort -u > "$REGISTERED_SKILLS"
# Extract documented skills from capabilities-reference.md
grep -E "^\| \`[a-z-]+\` \|" book/src/reference/capabilities-reference.md 2>/dev/null | \
sed -n '/All Skills/,/All Commands/p' | \
grep -E "^\| \`" | \
awk -F'|' '{gsub(/[`\[\] ]/, "", $2); gsub(/.*\(\.\.\/plugins\//, "", $3); gsub(/\.md\).*/, "", $3); print $3":"$2}' | \
sort -u > "$DOCUMENTED_SKILLS"
# Extract registered commands
for pjson in plugins/*/.claude-plugin/plugin.json; do
plugin=$(basename $(dirname $(dirname "$pjson")))
jq -r --arg p "$plugin" '.commands[]? | sub("^\\./commands/"; "") | sub("\\.md$"; "") | "/\($p):\(.)"' "$pjson" 2>/dev/null
done | sort -u > "$REGISTERED_COMMANDS"
# Extract documented commands
grep -E "^\| \`/" book/src/reference/capabilities-reference.md 2>/dev/null | \
sed -n '/All Commands/,/All Agents/p' | \
grep -E "^\| \`/" | \
awk -F'|' '{gsub(/[`\[\] ]/, "", $2); gsub(/ /, "", $3); print $2}' | \
sort -u > "$DOCUMENTED_COMMANDS"
# Extract registered agents
for pjson in plugins/*/.claude-plugin/plugin.json; do
plugin=$(basename $(dirname $(dirname "$pjson")))
jq -r --arg p "$plugin" '.agents[]? | sub("^\\./agents/"; "") | sub("\\.md$"; "") | "\($p):\(.)"' "$pjson" 2>/dev/null
done | sort -u > "$REGISTERED_AGENTS"
# Extract documented agents
grep -E "^\| \`[a-z-]+\` \|" book/src/reference/capabilitiAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/athola/skills/nm-sanctum-doc-updates",
"sourceUrl": "https://clawhub.ai/athola/skills/nm-sanctum-doc-updates",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T11:09:54.927Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-doc-updates/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-doc-updates/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T11:09:54.927Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.5K downloads",
"href": "https://clawhub.ai/athola/nm-sanctum-doc-updates",
"sourceUrl": "https://clawhub.ai/athola/nm-sanctum-doc-updates",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T11:09:54.927Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.9.19",
"href": "https://clawhub.ai/athola/nm-sanctum-doc-updates",
"sourceUrl": "https://clawhub.ai/athola/nm-sanctum-doc-updates",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-26T13:20:16.228Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-doc-updates/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-sanctum-doc-updates/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.9.19",
"description": "Release v1.9.19",
"href": "https://clawhub.ai/athola/nm-sanctum-doc-updates",
"sourceUrl": "https://clawhub.ai/athola/nm-sanctum-doc-updates",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-08-26T13:20:16.228Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
