cp-skill-convert
SkillFiles & storageConvert notes between types. Currently supports text to note by adding unverified structured frontmatter, renaming the file to match the title, and fixing backlinks. Use with a note path or note name.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the cp-skill-convert skill
What this skill tells your AI
The instructions your AI receives, as published by zby/commonplace in kb/instructions/cp-skill-convert/SKILL.md and read by ahel’s review.
EXECUTE NOW
Target: $ARGUMENTS
Parse immediately:
- If target contains just a note name or path: convert text → note
- If target requests another conversion form, explain that only text → note is currently implemented
- If target is empty: ask which note to convert
Supported conversions
text → note (current)
The primary conversion. Adds frontmatter to a raw text file, making it structured and connectable.
Step 1: Locate and verify
Resolve the target to a file path. If just a name, search kb/notes/ recursively.
Read the file. Verify it has no frontmatter (does not start with ---). If it already has frontmatter, report that it's already structured and stop.
Step 2: Understand the content
Read the full file. Identify:
- The core topic (what is this about?) — needed for writing the description
- Whether the current filename matches the
# Titleheading (see Step 3a)
Step 3: Generate frontmatter
Add YAML frontmatter at the top of the file:
---
description: [50-250 chars, adds mechanism/scope/implication beyond the title]
type: kb/types/note.md
traits: []
tags: []
---
Rules:
- Do not add
user-verified— conversion structures the note but cannot grant human attestation. descriptionmust add information beyond the title. See note base type for quality criteria.traitsis always[]— trait assignment is semantic work, done later by a writer or human reviewer; deterministic validation does not infer traits.tagsis always[]— tag assignment is semantic work and remains empty until a separately authorized editing task assigns it.cp-skill-connectreports candidate links only; it does not edit tags or library artifacts.- Do NOT modify the body content. Conversion adds structure, not editorial changes.
Step 3a: Rename the file
After adding frontmatter, check whether the filename matches the # Title heading.
The filename should match the title. Whether the title itself is good is a semantic question for a human or a frontmatter review assay; deterministic validation checks only its structural limits.
Decide whether to rename:
- If the current filename is already a good slug of the
# Title— keep it - If the filename diverges from the title (e.g. file is
connect-pipeline-features.mdbut the title is# Connect pipeline should detect reciprocal links) — rename it to match
To rename:
- Derive the new filename from the
# Titleheading. Slugify: lowercase, hyphens for spaces, strip punctuation,.mdextension. - Check for backlinks to the old path:
rg -l 'old-filename\.md' kb/ - If backlinks exist, update them all to point to the new filename (preserve the same relative path structure — only the filename changes, not the directory).
- Rename the file:
git mv old-path/old-filename.md old-path/new-filename.md
Rules:
- The file stays in its current directory. Rename only, no move.
- If the title heading changed during frontmatter addition (it shouldn't — see "Do NOT modify body content"), use the original title.
Step 4: Report
=== CONVERTED: filename.md ===
text → note (unverified)
renamed: old-filename.md → new-filename.md [or "filename unchanged" if no rename]
backlinks updated: 3 files [or "none" if no backlinks]
description: [the description you wrote]
tags: []
Next steps:
- Run the `cp-skill-connect` skill on `new-filename.md` — report candidate
connections without mutating the note
- Run the `cp-skill-validate` skill on `new-filename.md` — check deterministic structure and references
- Optionally ask the user to verify the artifact after review; only the human may add `user-verified: true`
===
Unsupported conversions
If a user requests any conversion other than text → note, explain that it is not implemented and stop. Do not invent a conversion or retain a speculative feature catalogue. If repeated use establishes a concrete missing conversion, route that design gap through the repository's normal proposal process before adding it here.
Critical Constraints
Never:
- Add
user-verified— that requires explicit human attestation after review - Modify body content — only add/change frontmatter
- Convert a text file that already has frontmatter (it's not a text file)
- Write a description that merely restates the title
- Move a file to a different directory — rename only changes the filename within its current directory
- Install software — if a required tool is missing, bail with an error
Always:
- Leave
user-verifiedabsent for text → note conversions - Write a description that adds mechanism, scope, or implication
- Rename the file to match the
# Titleheading (unless it already does) - Fix all backlinks when renaming
- Use
git mvfor renames so git tracks the history - Report what was done so the user can review
Signals
- GitHub stars
- 88
- Forks
- 11
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
cp-skill-convert- Source
- github.com/zby/commonplace