paddleocr-doc-parsing
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Schema-as-code enforcement for any Obsidian vault. Zero hardcoded domains. Use when creating vault cards, checking vault health, running schema compliance, deduplicating entities, generating MOC indexes, running decay cycles, bootstrapping a vault, fixing wikilinks, finding
Claude Code
$ npx -y skills add smixs/autograph --skill autograph --agent claude-code
Codex
$ npx skills add smixs/autograph --skill autograph -a codex -y
Cursor
$ npx skills add smixs/autograph --skill autograph -a cursor -y
Gemini CLI
$ npx skills add smixs/autograph --skill autograph -a gemini-cli -y
GitHub Copilot
$ npx skills add smixs/autograph --skill autograph -a github-copilot -y
OpenCode
$ npx skills add smixs/autograph --skill autograph -a opencode -y
Windsurf
$ npx skills add smixs/autograph --skill autograph -a windsurf -y
name: autograph description: >- Schema-as-code enforcement for any Obsidian vault. Zero hardcoded domains. Use when creating vault cards, checking vault health, running schema compliance, deduplicating entities, generating MOC indexes, running decay cycles, bootstrapping a vault, fixing wikilinks, finding orphans or backlinks, extracting entities from daily files, or touching/promoting cards. Do NOT use for content generation or non-vault file operations.
One schema. One graph. Works on any vault.
No hardcoded domains, types, or paths. The agent discovers structure from data, builds a schema, then enforces it. All scripts share `common.py`. Metadata uses PyYAML 6.0.3 (safe scalar loader); uv installs the declared dependency. API calls use urllib.
| Workflow | When to use | Entry point | |----------|-------------|-------------| | **BOOTSTRAP** | New vault / after import / first setup | `discover.py` → `enforce.py` → `graph.py health` | | **HEALTH** | Daily maintenance / on request | graph + strict YAML checks → scoped repair manifest | | **CREATE / UPDATE** | New knowledge card, or new info about an existing one | `search.py` dedup → ADD/UPDATE/SUPERSEDE → link → touch | | **SEARCH & LINK** | Find info + strengthen connections | Hub → links → target; `graph.py orphans` → connect | | **ORCHESTRATE** | Automated multi-agent workflows (no API keys) | `orchestrate.py health\|bootstrap` | | **DAILY → CARDS** | Turn a day's raw notes into linked cards | `daily.py extract` → dedup-first process → link |
---
**When to use:** New vault, bulk import, first setup. Run once, then switch to HEALTH.
**Full guide:** `references/bootstrap-workflow.md`
1. **Discover:** `uv run scripts/discover.py <vault-dir> --verbose > /tmp/discovery.json` 2. **Generate schema:** Script baseline (`generate_schema.py`) + **agent swarm** (`swarm_prepare.py` → Wave 1 haiku → `swarm_reduce.py` → Wave 2 sonnet). **NEVER skip the swarm.** 3. **Review:** Human approves schema. Never auto-apply. 4. **Bootstrap + Enforce:** `engine.py init` + `enforce.py --apply` 5. **Link cleanup:** `link_cleanup.py --apply` (before enrichment) 6. **Tag enrich:** `enrich.py tags --apply` (via OpenRouter API) 7. **Deduplicate:** `dedup.py --apply` (before link enrichment) 8. **Link enrich:** `enrich.py swarm-links --apply` (**always swarm-links, never links**) 9. **MOC generation:** `moc.py generate` 10. **Verify:** `enforce.py --check` on the scoped manifest + `graph.py health` on the staged vault; resolve concrete validation/link findings. A health score is not an acceptance gate.
---
Read [integrity.md](references/integrity.md) before maintenance or creating cards.
1. Build a staged view or run read-only checks. Use graph health for links and enforce --check for strict YAML/schema validation. 2. Separate missing targets, ambiguous links, no-incoming cards, isolated cards and reachability from hubs. Counts overlap; the health score is not an acceptance gate. 3. Inspect current sources and prepare an explicit file manifest. Preserve original bytes and body content for mechanical changes. Never infer a business state from an unknown status. 4. Apply only the reviewed repair scope. Do not mutate readonly archival paths. MOC generation preserves legacy/manual files unless an explicit managed block exists. 5. Recheck changed metadata and links, then publish the completed batch through the vault transport. Verify remote delivery separately.
The health orchestration command reports only; it does not automatically fix links, regenerate MOCs or change decay. Use uv run for all Python entry points so the declared YAML dependency is available.
**When to use:** Recording any card, or new information about something the vault may already track. Always look up first, always link immediately — a near-duplicate is the most common mistake; an orphan card is wasted knowledge.
uv run scripts/search.py "<entity / key phrase>" --vault <vault-dir> --json # fallback: grep -ril "<name>" <vault-dir>
Pick the operation (full rules: `references/update-in-place.md`):
Only when the operation is **ADD**, continue:
1. **Type:** Pick from schema `node_types` 2. **Path:** Reverse-lookup `domain_inference` to find target folder:
# domain_inference maps path→domain. To find folder for domain "crm":
for path_prefix, domain in schema['domain_inference'].items():
if domain == 'crm':
target_folder = path_prefix # e.g. "work/crm/"
break3. **Frontmatter:** Write description (search snippet, not title repeat), tags (2-5, lowercase, kebab-case), status from type's enum 4. **LINKING PROTOCOL (mandatory):** a. Add `## Related` section with `[[hub]]` file of the doma
Schema-as-code memory for AI agents that write to an Obsidian vault. One schema.json keeps the vault typed, linked, deduplicated, and decaying — automatically. autograph is a memory engine for Obsidian vaults that AI agents write to.
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…