Commit d10a05b0db067eee59f706b99779d828f990d96e

Authored by graphlemon
1 parent d1130048

graphlemon: auto-commit uncommitted changes for 7687a053-f60f-48a4-8c44-a7e51843…

…0cd7-main-checkout-drift
.claude/agent-memory/planner/MEMORY.md
... ... @@ -7,3 +7,4 @@
7 7 - [run-history click → missing run detail page](project_run_history_click_missing_detail_page.md) — gc_runs_list click only switches task selector, no #/runs/:run_id route exists (documented trade-off, not a bug regression); DAG-panel+log-viewer funcs are run-object-generic and reusable verbatim; backend needs one new by-run_id query since _work_nodes_for_run already exists keyed by run_id
8 8 - [nav current-project-context PRD: consistent](project_nav_current_project_context_prd.md) — reviewed 2026-08-06, no contradictions; FR-5's "query-string parsing fix" is actually an add (render() has no query-string parsing today, only hash-path regex) — flag as accuracy issue at SDD stage, not a PRD contradiction
9 9 - [deploy_stage.py ConcurrentDeploymentError PRD: consistent](project_deploy_stage_concurrent_conflict_prd.md) — reviewed 2026-08-07, no contradictions; all facts (staged→candidate_starting transition, ux_deployment_active terminal set) verified against code
  10 +- [skills detail-content bug: already fixed](project_skills_detail_content_bug_already_fixed.md) — get_skill_content/route/panel/tests all present 2026-08-13; only unverified is git commit/Validator status, not missing code
... ...
.claude/agent-memory/planner/project_skills_detail_content_bug_already_fixed.md 0 → 100644
  1 +---
  2 +name: skills-detail-content-bug-already-fixed
  3 +description: The #/skills/:id/audit page "no real SKILL.md content shown" bug is already fully implemented end-to-end as of 2026-08-13 — verify before replanning as open
  4 +metadata:
  5 + type: project
  6 +---
  7 +
  8 +As of 2026-08-13, the goal "修复 #/skills 页面点击某个 skill 后不显示该 skill 真实内容的 bug" is
  9 +already fully implemented on disk, not open:
  10 +
  11 +- `src/skill_query.py::get_skill_content()` + `SkillContentMissingError` — reads
  12 + `skills/<skill_id>/SKILL.md` via `skill_update._skill_file_path()`, with two-layer path-traversal
  13 + protection (realpath + `os.path.commonpath` containment check against `skills/`), and lists
  14 + sibling `references/`/`templates/`/`scripts` files as `support_files`.
  15 +- `src/backend_server.py::_handle_skill_content()` — `GET /api/skills/:skill_id/content` route,
  16 + wired into the dispatcher via `_SKILLS_PREFIX` + `.endswith("/content")`.
  17 +- `frontend/app.js::mountSkillAuditLog()` — new "Skill 内容" `<div id="skill_content">` panel,
  18 + rendered *alongside* (not replacing) the existing "迭代记录" iteration-history panel, fetched
  19 + independently. Uses plain `<pre class="code">` + `escapeHtml`, same convention as
  20 + `v_artifact_browser` — no markdown/highlight lib.
  21 +- Tests: `src/test_skill_query.py` (7 cases incl. two path-traversal-rejection cases) and
  22 + `src/test_backend_server.py` (3 cases at ~line 1710-1722).
  23 +
  24 +Origin: a prior self-hosted graphlemon run, `.graphlemon/runs/7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35/`
  25 +(task `wa4wewx1g`), whose `test_report.md` describes this exact fix and says it was **"left
  26 +uncommitted for Validator review"**. The files on disk already contain the full change when read
  27 +directly — but git commit/Validator-approval status was not independently re-verified in this
  28 +session (no Bash tool available to this agent). Before treating this as fully closed, check
  29 +`git log`/`git status` on `src/skill_query.py`, `src/backend_server.py`, `frontend/app.js` to
  30 +confirm the change actually landed on the tracked branch rather than sitting as an uncommitted
  31 +worktree diff.
  32 +
  33 +**How to apply:** if this goal resurfaces, re-read the three files above first — do not replan a
  34 +fresh implementation. If still open, the only gap is likely commit/merge status, not missing code.
... ...