aimasteracc/tree-sitter-analyzer/tsa-constraints

Claude Code and agent skill by aimasteracc/tree-sitter-analyzer

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Architectural constraint enforcement. Detect forbidden cross-module calls ("MCP must not depend on CLI") at index time and gate edits on them. Rules live in YAML at repo root; violations bubble up through edit action=safe and edit action=impact as UNSAFE verdicts. Use when: - User asks "does this PR break architecture?" - Pre-merge gate: "any forbidden edges?" - User wants to ADD a new architectural rule - You see a verdict=UNSAFE and want to understand why - Onboarding: "what are the architectural rules of this repo?" Replaces: tribal-knowledge architecture reviews + manual import audits (~5-15k tokens) with 1 MCP call (~200 tokens) + a YAML file (the rules).

Install

npx vskill@latest install aimasteracc/tree-sitter-analyzer/tsa-constraints

SKILL.md

tsa-constraints — Inhibitory edges as code

Bio-analogy: inhibitory synapses — declared "X must NOT call Y" rules
that fire UNSAFE verdicts when violated. Rules live in
architectural-constraints.yml at repo root, are evaluated against the
persisted call graph, and persist violations in SQLite for fast re-reads.

When to use

GoalAction
List current rulesRead architectural-constraints.yml
Check repo against rulesedit action=constraints (no args)
Pre-edit gate (includes rule check)edit action=safe (auto)
Add a new ruleEdit YAML + re-run edit action=constraints
Filter violations by severityedit action=constraints severity_min="error"
Filter by pathedit action=constraints path_filter="mcp/**"

Procedure

One-shot audit
edit action=constraints

Returns:

yaml
success: true
verdict: SAFE | CAUTION | UNSAFE
violations: [
{rule_id, caller_file, caller_line, callee_name, callee_file, severity, reason}
]
rule_count: <int>
evaluated_edge_count: <int>

Verdict cascade:

  • UNSAFE → any error-severity violation
  • CAUTION → any warn-severity violation
  • SAFE → none
Adding a new rule
  1. Open architectural-constraints.yml at repo root
  2. Append:

```yaml

  • id: <slug, kebab-case>

severity: error | warn | info rule: forbid from: "path/glob/" to: "path/glob/" reason: "<why this is forbidden>" exceptions: ["specific/file.py"] # optional ```

  1. Run edit action=constraints to see if existing code violates the new rule
  2. Either: fix the violations OR add them to exceptions
Reading violations

For each violation row:

  • rule_id — which rule fired (look it up in the YAML for reason)
  • caller_file:caller_line — the offending call site
  • callee_file — what it's calling (may be empty if callee unresolved)
  • severity — error = block, warn = surface only, info = noise

DSL semantics

  • rule: forbid — currently the only supported rule type (MVP)
  • from / to — fnmatch-style globs (** for recursive)
  • exceptions — caller-side globs that bypass the rule
  • Unknown top-level keys → fatal parse error
  • Unknown per-rule keys → warn + skip (forward-compat)

Default rules in THIS repo

Inspect:

bash
cat architectural-constraints.yml

Current 3 rules (as of last commit):

  1. mcp-must-not-depend-on-cli — MCP tools are runtime adapters; CLI imports MCP, never reverse
  2. language-plugins-isolated — language plugins can't know about MCP
  3. core-must-not-import-mcp — core analysis primitives precede MCP layer

CLI equivalents

bash
uv run tree-sitter-analyzer --check-constraints --output-format toon
uv run tree-sitter-analyzer --check-constraints --severity-min error
uv run tree-sitter-analyzer --check-constraints --constraint-path-filter "mcp/**"
uv run tree-sitter-analyzer --check-constraints --constraint-file path/to/alt-rules.yml

Exit codes mirror --change-impact:

  • 0 → SAFE
  • 2 → CAUTION (warn-only)
  • 1 → UNSAFE (error severity)

CI gating example:

bash
uv run tree-sitter-analyzer --check-constraints || exit 1 # block PR on UNSAFE

Anti-patterns

  • Don't write a rule per file — use globs (tree_sitter_analyzer/mcp/**)
  • Don't set severity=info on rules you actually want enforced (info = visible only)
  • Don't forget reason: — agents reading violations need it to suggest fixes
  • Don't disable via --no-constraints in CI — that defeats the gate's purpose

Decision surface

yaml
verdict: SAFE | CAUTION | UNSAFE
violations: [...] # empty when SAFE
rule_count: <int>
evaluated_edge_count: <int>

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/aimasteracc/tree-sitter-analyzer/tsa-constraints/badge)](https://verified-skill.com/skills/aimasteracc/tree-sitter-analyzer/tsa-constraints)

Something wrong with this skill or its page? Tell us.