chore: scaffold skill_tree (issue 0109)
Initial scaffold via init_cpp_app_bash_pipelines: - main.cpp con Tree + Inspector panels (placeholders) - app.md con trio icon (tree-structure + #c026d3) + e2e_checks - CMakeLists.txt via add_imgui_app - appicon.ico generado con generate_app_icon_py_infra Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
add_imgui_app(skill_tree
|
||||||
|
main.cpp
|
||||||
|
)
|
||||||
|
target_include_directories(skill_tree PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
|
# fn_table_viz: provides data_table::render(), viz_render, TQL engine, Lua, LLM.
|
||||||
|
# Guard keeps the app compilable in builds where vendor/lua is absent.
|
||||||
|
if(TARGET fn_table_viz)
|
||||||
|
target_link_libraries(skill_tree PRIVATE fn_table_viz)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set_target_properties(skill_tree PROPERTIES WIN32_EXECUTABLE TRUE)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
name: skill_tree
|
||||||
|
lang: cpp
|
||||||
|
domain: tools
|
||||||
|
description: "Mapa interactivo de issues+flows en anillos concentricos por estado, click para spawn agentes"
|
||||||
|
tags: [dashboard, meta, imgui]
|
||||||
|
icon:
|
||||||
|
phosphor: "tree-structure"
|
||||||
|
accent: "#c026d3"
|
||||||
|
uses_functions: []
|
||||||
|
uses_types: []
|
||||||
|
framework: "imgui"
|
||||||
|
entry_point: "main.cpp"
|
||||||
|
dir_path: "apps/skill_tree"
|
||||||
|
repo_url: "https://gitea.organic-machine.com/dataforge/skill_tree"
|
||||||
|
e2e_checks:
|
||||||
|
- id: build
|
||||||
|
cmd: "cd cpp && cmake --build build --target skill_tree -j"
|
||||||
|
timeout_s: 300
|
||||||
|
- id: self_test
|
||||||
|
cmd: "./cpp/build/apps/skill_tree/skill_tree --self-test"
|
||||||
|
timeout_s: 30
|
||||||
|
severity: warning
|
||||||
|
---
|
||||||
|
|
||||||
|
# skill_tree
|
||||||
|
|
||||||
|
Mapa interactivo de los issues + flows del registry en anillos concentricos por estado.
|
||||||
|
Click en un nodo abre el panel `Inspector` con su Definition of Done y las funciones
|
||||||
|
del registry asociadas. Dos botones por nodo:
|
||||||
|
|
||||||
|
- **Generate ideas** (`claude -p`) → escribe a `idea_drafts` para revision manual.
|
||||||
|
- **Run autonomous-task** (`fn-orquestador`) → spawn subagente en sandbox `auto/<issue>`.
|
||||||
|
|
||||||
|
Roadmap: issue 0109. Diseno completo en el frontmatter del epic.
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd cpp && cmake --build build --target skill_tree -j
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./cpp/build/apps/skill_tree/skill_tree
|
||||||
|
```
|
||||||
|
|
||||||
|
## Estado
|
||||||
|
|
||||||
|
MVP fase A — sub-issue 0109a: shell + parsers issues/flows. Sin render de grafo todavia.
|
||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,52 @@
|
|||||||
|
#include <imgui.h>
|
||||||
|
#include "app_base.h"
|
||||||
|
#include "core/panel_menu.h"
|
||||||
|
#include "core/icons_tabler.h"
|
||||||
|
#include "core/logger.h"
|
||||||
|
// #include "viz/data_table.h" // uncomment to enable data_table::render() panel
|
||||||
|
|
||||||
|
static bool g_show_tree = true;
|
||||||
|
static bool g_show_inspector = true;
|
||||||
|
|
||||||
|
static void draw_tree() {
|
||||||
|
if (!ImGui::Begin(TI_GRAPH " Tree", &g_show_tree)) {
|
||||||
|
ImGui::End();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ImGui::TextUnformatted("skill_tree v0.1.0 — fase A (shell)");
|
||||||
|
ImGui::TextUnformatted("");
|
||||||
|
ImGui::TextUnformatted("Parsers de dev/issues + dev/flows pendientes (0109a).");
|
||||||
|
ImGui::TextUnformatted("Render anillos pendiente (0109b).");
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void draw_inspector() {
|
||||||
|
if (!ImGui::Begin(TI_INFO_CIRCLE " Inspector", &g_show_inspector)) {
|
||||||
|
ImGui::End();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ImGui::TextDisabled("Click en un nodo del Tree para inspeccionar.");
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render() {
|
||||||
|
if (g_show_tree) draw_tree();
|
||||||
|
if (g_show_inspector) draw_inspector();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int /*argc*/, char** /*argv*/) {
|
||||||
|
static fn_ui::PanelToggle panels[] = {
|
||||||
|
{ "Tree", nullptr, &g_show_tree },
|
||||||
|
{ "Inspector", nullptr, &g_show_inspector },
|
||||||
|
};
|
||||||
|
|
||||||
|
fn::AppConfig cfg;
|
||||||
|
cfg.title = "skill_tree";
|
||||||
|
cfg.about = { "skill_tree", "0.1.0",
|
||||||
|
"Mapa interactivo de issues+flows en anillos concentricos por estado." };
|
||||||
|
cfg.log = { "skill_tree.log", 1 };
|
||||||
|
cfg.panels = panels;
|
||||||
|
cfg.panel_count = sizeof(panels) / sizeof(panels[0]);
|
||||||
|
|
||||||
|
return fn::run_app(cfg, render);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user