本文へ移動
cccskills
無料GitHub で公開

verify

Verify task completion by demonstrating real value: run the new code on real data, show visible results, find gaps between plan and reality. Not about tests/builds — about proving the feature WORKS end-to-end.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md7.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

/verify — Demonstrate Value, Find Gaps

Philosophy

"It builds" proves nothing. "Tests pass" proves nothing. The only proof that a feature works is running it on real data and showing visible results.

This skill is the adversarial self-audit: take what was planned, run it for real, and report what actually works vs. what was quietly skipped, stubbed, or broken.

Steps

1. Extract the Plan

Determine what was supposed to be delivered. Sources (in order):

  • Active plan in conversation context
  • Linear issue (extract from branch name, fetch with mcp__linear__get_issue)
  • Task list (TaskList)
  • _tasks/REG-XXX/plan.md if exists

Extract the concrete deliverables — not "add C++ support" but the specific capabilities the plan promised (e.g., "parser emits 75 JSON node types", "analyzer produces 30 node types", "resolver creates 12 edge types").

2. Choose a Demo Target

Pick a real project to run the new feature against. Priority:

  1. Grafema itself — if the feature applies to its own codebase
  2. Well-known open-source repo — clone a small, representative project from GitHub
  3. Synthetic fixture — create a minimal but realistic file that exercises the feature

For language support tasks: create or find a file that covers the language's key constructs. Not a toy hello-world — something that exercises classes, functions, imports, templates/generics, error handling, etc.

For analysis/enrichment tasks: use an existing analyzed project and run the new capability against its graph.

3. Execute End-to-End

Run the full pipeline on the demo target. For each component in the plan, actually invoke it and capture output:

Parser (if applicable):

  • Run the parser on a real source file
  • Show the JSON AST output (or a representative sample)
  • Verify: does the output cover the constructs present in the file?
  • Count: how many of the planned node types actually appear?

Analyzer (if applicable):

  • Feed the parser output to the analyzer
  • Show the FileAnalysis output (nodes, edges, deferred refs)
  • Count: how many of the planned node types / edge types are actually emitted?
  • Verify: do semantic IDs look correct?

Resolver (if applicable):

  • Feed the analysis output to the resolver
  • Show the resolved edges
  • Verify: do cross-file references actually resolve?

MCP tools / CLI (if applicable):

  • Run the MCP query or CLI command
  • Show the actual output
  • Compare against what the user would expect

4. Planned vs. Actual Matrix

Build a concrete comparison table. This is the heart of /verify.

## Planned vs. Actual

| Planned Capability              | Status      | Evidence |
|--------------------------------------|-------------|----------|
| Parser: FunctionDecl nodes           | WORKS     | Seen in output for demo.cpp:10 |
| Parser: TemplateTypeParam nodes      | NOT TESTED  | No template in demo file |
| Parser: MacroExpansion nodes         | MISSING     | Macro present in file but not in output |
| Analyzer: CALL nodes from CallExpr   | WORKS     | 5 CALL nodes emitted |
| Analyzer: LAMBDA nodes               | STUBBED     | Handler exists but emits empty node |
| Resolver: EXTENDS edges              | WORKS     | MyDerived -> MyBase resolved |
| Resolver: virtual dispatch           | NOT TESTED  | Need polymorphic call site in fixture |

Status legend:

  • WORKS — demonstrated on real data, output is correct
  • NOT TESTED — demo target doesn't exercise this; need a better fixture
  • MISSING — should be there but isn't; gap found
  • STUBBED — code exists but produces empty/dummy output
  • WRONG — produces output but it's incorrect
  • DEFERRED — explicitly out of scope per plan (with justification)

5. Gap Drill-Down

For every MISSING, STUBBED, or WRONG item:

  1. Locate the code that should handle this case
  2. Diagnose: is it a missing handler? Wrong pattern match? Silent fallthrough?
  3. Classify:
    • Quick fix (< 20 lines, obvious what to do) — fix it now
    • Needs investigation (root cause unclear) — describe the symptom
    • Design gap (feature not designed for this case) — note as limitation
  4. Record in the report with specific file:line references

6. Produce the Report

## Verification Report: [Task ID / Title]

### Demo Target
[What was tested: file name, project, or fixture description]

### Value Demonstrated
[2-3 bullet points of what ACTUALLY works end-to-end, with real output snippets]

### Planned vs. Actual
[The matrix from Step 4]

### Gaps Found
[For each MISSING/STUBBED/WRONG item:]
- **[item]**: [diagnosis] — [file:line] — [quick fix | needs investigation | design gap]

### Deferred (per plan)
- [item]: [reason]

### Verdict: [DELIVERS VALUE | PARTIAL VALUE | NO VALUE YET]

### Recommended Next Steps
[Prioritized list of what to do next to close gaps]

7. Fix Quick Wins (Optional)

If there are quick fixes (< 20 lines each) and fewer than 5 of them — fix them now and re-run the demo to update the report. Don't ask for permission on trivial fixes that close real gaps.

For larger fixes — leave them as "Recommended Next Steps" in the report.


Choosing Good Demo Targets

For language support (parser/analyzer/resolver)

Create a single file that covers the breadth of the language. Checklist:

  • Function/method declarations (various signatures)
  • Class/struct/type definitions
  • Inheritance / interfaces / traits
  • Imports / includes / modules
  • Generics / templates
  • Lambdas / closures
  • Error handling (try/catch/throw)
  • Control flow (if/for/while/switch)
  • Variable declarations (various storage classes)
  • Calls (free function, method, static, constructor)

For analysis features

Use the Grafema codebase itself via MCP tools — it's always available and already analyzed.

For enrichment / resolver features

Run grafema analyze on a small open-source project, then query the graph for the new edge types / enrichments.


Anti-Patterns

  • Declaring victory from line counts — "6741 lines created" means nothing if the lines don't produce correct output
  • Demo on trivial input — "hello world" parsing proves nothing; use realistic code
  • Skipping the matrix — the planned-vs-actual table is mandatory, not optional
  • "It should work because it follows the pattern" — run it and see
  • Hiding NOT TESTED behind "out of scope" — if the plan said it, it's in scope; if you can't test it, say NOT TESTED, not DEFERRED
  • Fixing gaps silently — if you find and fix gaps, report them as "gap found and fixed", not as if they never existed

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fix Elixir/Erlang AST processing bugs in Grafema beam-analyzer. Use when: (1) Elixir parser returns MODULE node but 0 functions/calls — body nesting issue, (2) Erlang parser crashes with "cannot convert list to string" on OTP 26+ — location format changed from integer to keyword list, (3) pipe operator |> creates spurious CALL nodes instead of desugared function calls — clause ordering bug, (4) multi-module .ex files return only the first module — missing __block__ handler, (5) installing Erlang/Elixir on macOS with outdated Xcode/Clang.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fires after fixing any non-trivial bug or regression. Asks: could the graph have caught this as a guarantee? Pairs with reflection-in-and-on-action — picks up after "earliest catchable signal" and asks the next question: was that signal expressible in graph? Triggers: (1) after any non-trivial bug fix is verified working, (2) after a regression report (something used to work, broke), (3) during step 6 (knowledge extraction) of the workflow, (4) when reflection-on-action surfaces a "would have been catchable" signal. Outcome is a triage decision (graph-reachable? rule expressible? rule sound?) and either a draft Linear issue + guarantee proposal, or a recorded "graph capability gap" note. Never auto-creates guarantees.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix Playwright automation failures against code-server (VS Code in browser). Use when: (1) trust dialog blocks all clicks — "monaco-dialog-modal-block intercepts pointer events", (2) button:has-text() finds wrong buttons behind modal dialog, (3) keyboard shortcuts don't work — Meta vs Control inconsistency, (4) VS Code extension activity bar icon not found by aria-label, (5) panels show placeholder text despite extension being "Connected". Covers trust dialog dismissal, keyboard shortcut hybrid mode, extension panel selectors, and database connection verification for Grafema extension.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Systematic methodology for achieving 100% backward dataflow reachability in a new language. Create gauntlet fixture, write trace, diagnose gaps, fix analyzer/algorithm, iterate to 100%. Language-agnostic process. Use when: (1) adding a new language to Grafema, (2) auditing dataflow coverage for existing language, (3) user says "/dataflow-gauntlet".

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix docker exec hanging when starting background processes (servers, daemons) inside containers. Use when: (1) docker exec never returns despite using & or nohup, (2) background server started in container causes docker exec to hang indefinitely, (3) env_startup_command in SWE-bench or similar frameworks times out, (4) setsid/disown needed for proper process detachment in Docker. Root cause: docker exec tracks ALL processes in the exec session, not just the top-level PID.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Fix Node.js CLI tools crashing inside Docker containers when host-installed node_modules require a newer Node version than the container provides. Use when: (1) "SyntaxError: Invalid regular expression flags" with /v flag in string-width or similar packages, (2) node_modules installed on host with Node 20+ but container has Node 18, (3) `npm install` with file: protocol creates symlinks that break inside Docker, (4) pnpm workspace packages become broken symlinks in containers. Covers version detection, Node binary mounting, and npm install strategies for cross-version compatibility.

日本語の概要は準備中です。原文の説明を表示しています。

Disentinel/grafema362026年8月24日 更新

Disentinel のスキルをすべて見る

このスキルの問題を報告する