---
id: "0109a"
title: "skill_tree app shell + parsers issues/flows"
status: completado
type: feature
domain:
  - meta
  - cpp-stack
scope: app-scoped
priority: media
depends: []
blocks:
  - "0109b"
related:
  - "0109"
created: 2026-05-17
updated: 2026-05-17
tags:
  - skill-tree
  - cpp
  - imgui
  - parsers
---

# 0109a — skill_tree shell + parsers

Primer slice del epic 0109. Foco: app C++ scaffoldada, compilando, leyendo los 79 issues + 7 flows y reportando conteos en stdout. Sin render del grafo todavia — solo plumbing.

## Tareas

1. Scaffolder `./fn run init_cpp_app skill_tree --domain tools --desc "..." --tags "dashboard,meta"`.
2. Editar `app.md` generado: trio icon (`tree-structure`, `#c026d3`), `e2e_checks`, `uses_functions` iniciales.
3. Generar `appicon.ico` via `generate_app_icon_py_infra`.
4. Crear funcion `parse_md_frontmatter_cpp_core` (delegar a fn-constructor):
   - Input: `std::string content` (texto del .md completo).
   - Output: `MdFrontmatter` struct con `std::unordered_map<std::string, YamlValue>` y `std::string body`.
   - `YamlValue` = variant `{string, list<string>, null}`. Subset YAML suficiente para issues actuales.
   - Pure. Test golden: parsea los 79 issues + 7 flows sin error.
5. En `main.cpp` (scaffold inicial): al arrancar, scan `dev/issues/*.md` + `dev/flows/*.md`, parse cada uno, contar por status/domain. Log a stdout:
   ```
   skill_tree v0.1.0
   issues: 79 (28 pendiente, 3 in-progress, 72 completado, ...)
   flows:  7 (5 pending, 2 completed)
   parse errors: 0
   ```
6. `e2e_checks` build + self-test warning.
7. Compilar + deploy Windows via `redeploy_cpp_app_windows`.
8. Refrescar hub via `refresh_app_hub`.

## DoD

- [ ] App existe en `apps/skill_tree/` con `.git/` apuntando a `dataforge/skill_tree`.
- [ ] `app.md` con trio completo + `e2e_checks` + `uses_functions` declarados.
- [ ] `appicon.ico` generado.
- [ ] `fn index` exitoso, `mcp__registry__fn_show id="skill_tree"` muestra metadata.
- [ ] `parse_md_frontmatter_cpp_core` indexado en registry.
- [ ] `cmake --build cpp/build --target skill_tree` exitoso.
- [ ] `./skill_tree` (Linux) o `skill_tree.exe` (Windows) imprime conteos correctos.
- [ ] Tarjeta visible en `app_hub_launcher`.
- [ ] `fn doctor cpp-apps` limpio.
