원클릭으로
yaml-frontmatter-parsing
Lightweight YAML frontmatter extraction from markdown files without external dependencies
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Lightweight YAML frontmatter extraction from markdown files without external dependencies
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Pattern for VS Code tree views that consume optional services with graceful degradation
Patterns for building dashboard webviews with tabs and visualizations
{what this skill teaches agents}
Pattern for coordinating VS Code status bar updates with tree view and data provider refresh cycles
Pattern for building Node.js API clients with TTL-based caching and no external dependencies
CI pipeline patterns for VS Code extensions using GitHub Actions
| name | YAML Frontmatter Parsing |
| description | Lightweight YAML frontmatter extraction from markdown files without external dependencies |
| domain | parsing |
| confidence | low |
| source | earned |
Markdown files often use YAML frontmatter (delimited by --- lines) for metadata. Full YAML parsers like js-yaml are overkill when you only need simple key: value or key: "value" pairs. This pattern extracts frontmatter fields with zero dependencies.
Check if line 0 is ---, then find the closing ---. Lines between are frontmatter; everything after is body content.
const lines = content.split('\n');
let bodyStartIndex = 0;
const metadata: Record<string, string> = {};
if (lines[0]?.trim() === '---') {
const closingIndex = lines.indexOf('---', 1);
if (closingIndex > 0) {
bodyStartIndex = closingIndex + 1;
for (let i = 1; i < closingIndex; i++) {
const match = /^(\w+):\s*"?([^"]*)"?\s*$/.exec(lines[i]);
if (match) {
metadata[match[1].toLowerCase()] = match[2].trim();
}
}
}
}
Always provide a fallback for files without frontmatter. Check headings or use filename as the default:
let name = metadata.name || dirName;
if (name === dirName) {
const headingMatch = /^#\s+(.+)/.exec(lines[bodyStartIndex] ?? '');
if (headingMatch) { name = headingMatch[1].trim(); }
}
When extracting description or body text, start scanning from bodyStartIndex (after the closing ---), not from line 0 or line 1.
js-yaml is 50KB+ and handles features you don't need.content to strip frontmatter — keep the original content intact; use bodyStartIndex for display-layer parsing only.key: value and key: "value" pairs — no nested YAML, arrays, or multiline values.--- must be an exact match on its own line.