ソース情報
- リポジトリ
- tomevault-io/tomes
- ソースの最終更新活動
- 2026年7月23日 21:48
- 検出された SKILL.md の言語
- 英語
- スター
- 1
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/tomevault-io/tomes --skill tsa-pr-reviewコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
> Use when this capability is needed.
Use when writing kernel, account, or note MASM code that reads from or writes to the advice provider (advice stack / advice map) — validate advice data.
Use when writing a Rust test that exercises a failure path or a MASM test that expects a `panic` / `assert` — assert on the specific expected error variant or error code.
SOC 職業分類に基づく
SKILL.md を表示中
| name | tsa-pr-review |
| description | | Use when this capability is needed. |
Replaces "LLM reads the diff and guesses" with a deterministic pipeline that grounds the review in (a) the AST diff, (b) the persisted call graph, and (c) architectural-constraints.yml. Output is a structured verdict an agent can act on — including the exact pytest command to run before merge.
gh under the hood)Don't use when:
git diff| Concern | LLM-only diff read | tsa-pr-review |
|---|---|---|
| Classify signature vs body change | Heuristic | edit action=pr AST diff |
| Exact tests to run | Invented / hallucinated | edit action=impact verification_command |
| Caller blast radius | Grep guess | nav action=callers from persisted graph |
| Callee regression surface | Read N files | nav action=callees from persisted graph |
| Architecture rule violations | None | edit action=constraints vs YAML rules |
| Per-file pre-merge verdict | Subjective | edit action=safe SAFE/REVIEW/CAUTION/UNSAFE |
| Behaviour on Python 3.14 | n/a | Stable (grep-ast crashes, cgc silent-0) |
(Source: docs/internal/COMPETITOR_HEAD_TO_HEAD_2026-05-23.md — the 4
fault-tolerance advantages: oracle-consistent AST, indexed-not-silent,
Python 3.14-safe, no external DB dependency.)
In one message, call all three:
edit action=pr mode="staged" — AST diff classification, per-symbol
change category (signature_change / body_change / new_symbol / deletion),
and per-file changed-symbol list.
edit action=pr mode="pr" pr_url="<url>"mode="diff"; for branch-vs-main: mode="branch"edit action=impact mode="staged" — returns verification_command,
queue_ledger (in-scope vs out-of-scope dirty files), pytest_required,
and per-file impact rows.edit action=constraints — full repo audit against architectural-constraints.yml,
filtered to files the diff touches if you want noise-free output:
edit action=constraints path_filter="<glob covering changed files>".For each changed file from Step 1, call:
edit action=safe file_path="<abs>" edit_type="<refactor|add_feature|fix_bug|rename>"
Pick edit_type from the dominant change category in Step 1's
edit action=pr output. Returns per-file verdict + risk_factors.
For each changed signature (not body-only) symbol from Step 1, fan out two calls:
nav action=callers function_name="<sym>" language="<lang>" limit=20
— who depends on this; the blast radius if its signature moved.nav action=callees function_name="<sym>" language="<lang>" limit=20
— what it calls; the regression surface if its body changed.Filter callers/callees where callee_resolution == "stdlib" or "unknown" —
they're noise for blast-radius scoring (per tsa-graph guidance).
verdict_precedence (worst wins):
- BLOCK ← any edit action=constraints violation with severity=error
OR any edit action=safe verdict == UNSAFE
- REVIEW ← any edit action=safe verdict in {REVIEW, CAUTION}
OR pytest_required=true with no nearby tests
OR signature_change with ≥5 external callers
- APPROVE ← all per-file verdicts == SAFE,
all constraints pass,
pytest_required=false OR verification_command is tightly scoped
Surface the precise verification_command verbatim — never paraphrase it.
Suppose git diff HEAD~2 HEAD shows changes in two files. To walk through
without committing anything new, simulate the workflow against a real diff:
git -C /Users/aisheng.yu/git-private/tree-sitter-analyzer diff HEAD~2 HEAD --name-only
# → tree_sitter_analyzer/mcp/tools/safe_to_edit_tool.py
# → tree_sitter_analyzer/mcp/tools/change_impact_tool.py
# Call 1
edit action=pr mode="branch" include_call_graph=true
# returns:
# changed_files:
# - path: ".../safe_to_edit_tool.py"
# changed_symbols:
# - name: "SafeToEditTool.execute"
# category: "body_change"
# - name: "SafeToEditTool._score_risk"
# category: "signature_change" # ← signature changed
# - path: ".../change_impact_tool.py"
# changed_symbols:
# - name: "ChangeImpactTool.execute"
# category: "body_change"
# Call 2
edit action=impact mode="branch" agent_summary_only=true
# returns:
# verification_command: "uv run pytest tests/unit/test_safe_to_edit_tool.py
# tests/unit/test_change_impact_tool.py -q"
# pytest_required: true
# queue_ledger:
# in_scope: [".../safe_to_edit_tool.py", ".../change_impact_tool.py"]
# out_of_scope_dirty: []
# Call 3
edit action=constraints path_filter="tree_sitter_analyzer/mcp/**"
# returns:
# verdict: SAFE
# violations: []
edit action=safe file_path=".../safe_to_edit_tool.py" edit_type="refactor"
# → verdict: REVIEW, risk_factors: [{factor: "high_caller_count", ...}]
edit action=safe file_path=".../change_impact_tool.py" edit_type="fix_bug"
# → verdict: SAFE
nav action=callers function_name="_score_risk" language="python" limit=20
# → 7 callers; 6 in tests/, 1 in cli/commands/mcp_commands.py
nav action=callees function_name="_score_risk" language="python" limit=20
# → 4 callees; all local (good — no stdlib noise)
verdict: REVIEW
files:
- path: ".../safe_to_edit_tool.py"
verdict: REVIEW
changed_symbols: 2
signature_changes: 1
blast_radius: 7 # callers of _score_risk
health_grade: B
- path: ".../change_impact_tool.py"
verdict: SAFE
changed_symbols: 1
signature_changes: 0
blast_radius: 0
constraint_violations: []
verification_command: "uv run pytest tests/unit/test_safe_to_edit_tool.py
tests/unit/test_change_impact_tool.py -q"
stop_condition: "tests exit successfully AND no NEW failures vs main"
notes:
- "Signature change on _score_risk affects 1 non-test caller — verify mcp_commands.py still passes."
# Step 1 — Diff fan-out
uv run tree-sitter-analyzer --pr-review --change-impact-mode staged --output-format toon
uv run tree-sitter-analyzer --change-impact --change-impact-mode staged --agent-summary-only --output-format json
uv run tree-sitter-analyzer --check-constraints --constraint-path-filter "tree_sitter_analyzer/mcp/**" --output-format toon
# Step 2 — Per-file
uv run tree-sitter-analyzer <file> --safe-to-edit --edit-type refactor --output-format json
# Step 3 — Per-symbol
uv run tree-sitter-analyzer --callers <FUNC> --output-format toon
uv run tree-sitter-analyzer --callees <FUNC> --output-format toon
Exit codes mirror --change-impact / --check-constraints:
verification_command verbatim. r36 / past incidents confirm hallucinated
pytest invocations skip the regressions TSA already pinpointed.edit action=constraints because "the LLM can spot architecture
drift". It can't — the rules live in YAML and are evaluated against the
persisted edge graph.mode="staged" for pr_review with mode="branch" for
change_impact — keep modes consistent so both tools see the same diff.queue_ledger.out_of_scope_dirty — it tells you the working
tree has files outside the diff that may still break the build.output_format from toon to json — locked by user
(see CLAUDE.md "Deliberate design decisions"). Tokens matter.verdict: APPROVE | REVIEW | BLOCK
files:
- path: <abs>
verdict: SAFE | REVIEW | CAUTION | UNSAFE
changed_symbols: <int>
signature_changes: <int>
body_changes: <int>
new_symbols: <int>
deletions: <int>
blast_radius: <int> # external callers of changed signatures
regression_surface: <int> # non-stdlib callees touched
health_grade: A | B | C | D | F
risk_factors: [{factor, detail, severity}]
constraint_violations: [
{rule_id, caller_file, caller_line, callee_file, severity, reason}
]
verification_command:
[]
[]
[ ]
Verdict cascade (worst wins):
BLOCK → constraint error OR per-file UNSAFEREVIEW → per-file REVIEW/CAUTION OR ≥5-caller signature change OR
pytest_required and tests aren't co-locatedAPPROVE → all per-file SAFE, no constraint violations, tight verify cmdSource: aimasteracc/tree-sitter-analyzer — distributed by TomeVault.