MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Verter codebase architecture: high-level module map, TypeScript packages, plugin system, CSS analysis, MCP server, static analysis types
$ npx skills add pikax/verter --skill architecture -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pikax/verter architecture --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pikax/verter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/architecture .claude/skills/architecture && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "architecture" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/architecture into .claude/skills/architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architecture", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pikax/verter/tree/main/.claude/skills/architectureType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pikax/verter --skill architecture -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pikax/verter architecture --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pikax/verter.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/architecture .agents/skills/architecture && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "architecture" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/architecture into .agents/skills/architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architecture", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pikax/verter --skill architecture -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pikax/verter architecture --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pikax/verter.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/architecture .cursor/skills/architecture && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "architecture" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/architecture into .cursor/skills/architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architecture", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pikax/verter.git --path .claude/skills/architecture--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pikax/verter --skill architecture -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pikax/verter architecture --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pikax/verter.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/architecture .gemini/skills/architecture && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "architecture" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/architecture into .gemini/skills/architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architecture", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pikax/verter architectureInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pikax/verter --skill architecture -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pikax/verter.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/architecture .github/skills/architecture && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "architecture" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/architecture into .github/skills/architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architecture", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pikax/verter --skill architecture -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pikax/verter architecture --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pikax/verter.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/architecture .opencode/skills/architecture && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "architecture" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/architecture into .opencode/skills/architecture/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "architecture", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
architectureVerter codebase architecture: high-level module map, TypeScript packages, plugin system, CSS analysis, MCP server, static analysis types
Architecture is an agent skill from pikax/verter. Verter codebase architecture: high-level module map, TypeScript packages, plugin system, CSS analysis, MCP server, static analysis types
Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Static analysis and SAST. It works with TypeScript, Model Context Protocol and Vue.js. The repository describes itself as: Fast Rust-powered compiler, semantic extraction, and LSP for component frameworks. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 858624d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Architecture loads about 5.6k tokens when it runs. Until then it costs about 37 tokens; SKILL.md has 2,261 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pikax/verter at commit 858624d, republished under its MIT licence (© pikax). 2,261 words, ~5,637 tokens.
.claude/skills/architecture/SKILL.md (or your agent's skills folder).For domain-specific detail, see: /type-resolution, /type-cache-architecture, /component-meta, /compiler-codegen, /host-session.
Verter is one shared optimized codebase. Consumers reuse lower-level crates instead of separate semantic pipelines.
verter_language is the zero-dependency leaf routing authority: FileLanguage, FrameworkAdapterId, LanguageId, CapabilityId, and the pure static LanguageRegistry (classify_static(path) — never reads project config). Host-gated classification (static registry × ProjectCapabilitySnapshot) is owned by verter_session::framework::HostLanguageClassifier; scheduler/workspace consumers reach it only through session-implemented trait objects (SourceLoader::classify / WorkspaceAccess::classify_file). The crate is a verter_span-only leaf (its design allowance — spans for the parse-artifact regions; strings stay crate-interned) and keeps a crate-local id-intern table: no lower crate exposes a reusable interning facility, and the id set is bounded by registered languages. It also owns the framework-neutral parse payload: FrameworkParseArtifact (typed FrameworkParseCommon — ScriptRegion { span, source_type, kind } / template / style regions, external links, LanguageDiagnostics — plus a PRIVATE erased Arc<dyn CarrierParse>), with the raw downcast confined to each adapter's own bridge module (no capability token — a foreign artifact's erased payload is a DIFFERENT concrete CarrierParse type, so the Any downcast already fails structurally for it); the session's blessed accessors are FrameworkAdapterCtx::carrier_for::<T> (routed through each adapter's registered-projector opener, e.g. open_vue_carrier) and the Vue adapter's vue_parse(); the concrete VueParseCarrier + Vue producer live in verter_compiler::framework_common::vue_bridge.verter_session is the shared host/session/cache boundary for host-backed consumers.verter_semantic and verter_compiler own reusable semantics, lowering, and codegen.verter_resolution owns the reusable workspace module-resolution implementation: project routing, candidate/probe precedence, sealed observations, resolve frames and operational attempt/retention state. verter_session_query::resolution owns the supplied configuration, identities, requests/results, shared observation records, immutable budget policy and lexical path operations. Workspace, session and LSP consumers import each owner directly; the query boundary has no dependency on the implementation.verter_analyzer_mint holds restricted construction authorities (today MemberListAnchorMint). Rust has no crate-to-crate visibility, so a record type in verter_session_query whose production producer is the verter_semantic analyzer takes this authority in its constructor; the authority has no value-producing trait impl, so obtaining it requires naming this crate. workspace_dependency_layers pins its direct dependents to exactly verter_semantic (the production producer) and verter_session_query (the record crate, whose tests mint too) — the mint is held by both, not by the analyzer alone. This is restricted constructor access, not proof of syntax-tree provenance.verter_session::resolver_core owns the host-backed resolver stack and type-resolution orchestration. Resolver-path methods receive ctx: &dyn ResolverContext (sealed super-trait at resolver_core/resolver_context.rs) — the sealed RequestBoundAdapter<L> carrier implements it over the request lifecycle alone, so the engine holds no host, store or config field. The rails that enforce that are the carrier field's pub(super) visibility plus the engine's exclusive use of &dyn ResolverContext (the resolver_core/adapter_field_set_witness module adds only a compile-time arity pin on the carrier's field set); the five request-bound ports in resolver_core/request_ports.rs (with the engine-owned RequestSnapshot carrying the per-node cancellation, project-generation and clock reads) are the boundary, witnessed by the engine_ports_* compile-contract fixtures.verter_protocol owns transport-facing schema DTOs; verter_ffi stays a thin native/WASM adapter layer.Bug or slowdown in one surface → fix in shared substrate so other consumers benefit.
| Package | Purpose | Entry Point |
|---|---|---|
@verter/types | TypeScript utility types (PatchHidden, ExtractHidden, EmitsToProps, etc.). Has /string export with $V_ prefixed types for LSP injection | src/index.ts |
@verter/language-shared | Shared custom protocol types between VS Code client and Rust LSP binary | src/index.ts |
@verter/typescript-plugin | TypeScript plugin resolving .vue imports in TS/JS files. Intercepts module resolution to return transformed TSX | src/index.ts |
verter-vscode | VS Code extension. Launches Rust verter-lsp binary over stdio, bundles TS plugin, handles extension activation | src/extension.ts |
@verter/unplugin | Universal bundler plugin (Vite, Rollup, webpack, esbuild, rspack, Rolldown, Farm). Compiles .vue files via @verter/native. Supports preCompile for build-start cache warming | src/index.ts |
packages/unplugin/)@verter/unplugin provides a VerterPluginOptions interface:
| Option | Type | Default | Description |
|---|---|---|---|
componentId | (filename, source, isProd) => string | hash-based | Custom component ID generator |
include | string | RegExp | (string | RegExp)[] | [/\.vue$/] | File patterns to include |
preCompile | boolean | false | Pre-compile all .vue files during buildStart. Scans project root, upserts files into host cache (including type dependencies for macros), and compiles them. When transform() later receives same content, host returns cached result instantly. node_modules excluded from scanning. |
crossFileOptimize | boolean | false | Cross-file prop constness optimization. Requires preCompile: true. After pre-compilation, analyzes render tree to determine which props are always passed constant values, skipping dynamic tracking in compiled output. |
template | object | — | Template compiler options (compat with @vitejs/plugin-vue) |
preCompile architecture: During buildStart(), scans project root for .vue files (excluding node_modules and dot-directories). For each file: upserts into host, resolves external src attributes and macro type dependencies (e.g., import type { Props } from './types' used in defineProps<Props>()), then triggers compilation. When another plugin modifies the file before transform(), host detects content change via internal hashing and recompiles. Third-party .vue files in node_modules compile on-demand during transform() — no pre-compilation overhead.
Macro type resolution invariant: cross-file macro type resolution must only follow imports reachable from the requested type's local declaration graph. Unrelated imports in the same file are out of scope; plain imports are not implicit re-exports.
crates/verter_semantic/src/analysis/)verter_css_syntax is the shared lossless token/event authority for CSS, SCSS, indented Sass, Less, and Stylus. StyleSyntaxIrSink and LosslessCstSink are peers over the same parser event stream. Semantic style analysis projects only complete, static selector nodes into selectors, classes, IDs, custom properties, and at-rules; interpolation, recovery, and evaluation-dependent selectors fail closed. Each AnalyzedCssClass carries selector_index (exact class → comma-part selector join) and each AnalyzedSelector carries rule_body_span (brace- or indentation-delimited body span). Vue's planner separately consumes trusted IR for authored-dialect v-bind() and post-preprocess plain-CSS module hashing/scoping; Svelte consumes the IR as a trust gate for its distinct plain-CSS matcher/scoper. Svelte's carrier/CSS parser remains the compatibility owner until exact Svelte 5.56.10 error-code, offset, and read-past-close parity is proven. Style v-bind() usage is discovered through the same dialect-aware planner IR, then OXC-derived expr_roots/roots_complete remain the liveness facts consumed by mark_bindings_used_in_style and compile-input assembly.
StyleSyntaxIr retains positioned containment and balanced values without evaluating or compiling preprocessors. Imports, modules, plugins, guards, mixin/function arguments, and control expressions remain opaque-but-positioned. StyleSyntaxIr::dependencies() is the parse-minted inclusion inventory (@import/@use/@forward/@plugin, in source order, each with its keyword span and quote/url()-stripped specifier span), so no consumer walks the at-rules again to find out which sheets a block pulls in; dependency_pulls_in_unparsed_bytes is the same owner's answer to whether an inclusion actually brings foreign bytes with it (Sass's built-in sass: modules do not).
verter_css_syntax::stage owns the identity every style consumer shares — StyleStage, StyleProducer, StyleDiagnostic, StyleDependency, QualifiedStyleResult, and the PreprocessedStyle admission witness — plus the single lang="…" spelling → CssDialect mapping (CssDialect::from_lang, byte-exact) and the single "is this already CSS" predicate (CssDialect::requires_external_preprocessing). Style bytes leave the compiler as a QualifiedStyleResult and enter it as a PreprocessedStyle carrying its producer, never as a bare string. The carrier parser's StyleLang::from_bytes and the carrier-level StyleDialect are the deliberately larger universe (they also name postcss, plus an unrecognised state), owned by the carrier parse projection and read by the consumers that serve a dialect the rewrite pipeline refuses. See /compiler-codegen → "Stage-Qualified Style Identity".
Stylesheet parser mode is deterministic by dialect and structural tokens. CSS always uses brace grammar. Sass and Stylus use the layout-capable grammar, which also recognizes explicit braced blocks. SCSS and Less use brace grammar whenever the lexer emits any plain LeftBrace; only a brace-free source with an actual deeper-indented line pair uses layout grammar. Closing-brace indentation and other incidental formatting never select the parser. Selector trust folds every component descendant and functional-pseudo selector list; class/ID collection descends those lists and gates each component independently, so complete literal class components may still publish from an otherwise evaluation-dependent selector such as &.active or :global(.a .#{$x}). A textually certain :deep/:global/:slotted kind publishes independently of argument trust, while every class inside its argument remains subject to the same per-component gate. Ambiguous optional-syntax statements remain locally typed and diagnosed without recovering intact ancestor rules. A declaration may own a retained StyleBlock (for example, an indented Sass nested-property namespace); the IR sink never discards such a block.
Module structure:
style.rs # Semantic style projection types and specificity computation
style_syntax.rs # Five-dialect syntax-to-semantic projection
selector_match.rs # Three-valued selector matching against template elements
template.rs # Template element analysis, dynamic class extraction, :style CSS var extractionKey types:
| Type | Location | Purpose |
|---|---|---|
StructuredSelector | style.rs | Parsed CSS selector (compounds + combinators) |
CompoundSelector | style.rs | Single compound: element, classes, id, attributes, pseudo-classes |
SelectorCombinator | style.rs | Descendant / Child / NextSibling / LaterSibling |
MatchResult | selector_match.rs | Three-valued: Matches, MaybeMatches, NoMatch |
DomQueryCallSite | types.rs | DOM query call with parsed selector and spans |
StyleBlockAnalysis | style.rs | Per-<style> block analysis with nested CssAnalysis |
AnalyzedCustomProperty | style.rs | CSS custom property with name/value spans, var references, selector index |
CssVarReference | style.rs | var() call with name, span, optional fallback (recursive) |
AnalyzedVarUsage | style.rs | Regular CSS property using var() with property name and selector index |
CssVarManipulation | types.rs | Script-side CSS variable manipulation via DOM APIs |
DynamicStyleVar | template.rs | CSS variable set via :style binding in template |
StaticStyleVar | template.rs | CSS variable set via static style attribute in template |
CssVarFlow | project_index.rs | Cross-component CSS variable flow (definitions + usages + manipulations) |
CSS Variable Analysis (three-block tracking):
AnalyzedCustomProperty (definitions with values/spans) and AnalyzedVarUsage (var() references). extract_var_references() handles nested var() fallbacks without evaluating values.extract_dynamic_style_vars() extracts CSS vars from :style="{ '--color': val }". extract_static_style_vars() extracts from style="--color: red".try_extract_css_var_manipulation() detects el.style.setProperty('--x', val), getPropertyValue('--x'), removeProperty('--x').ProjectIndex.css_var_flow(name) and VerterHost.css_var_flow(name) return CssVarFlow with all files defining/referencing/manipulating a variable.Selector matching algorithm (match_selector()):
Child checks parent_index, Descendant walks ancestor chain:class or component types → MaybeMatches (can't determine statically):not() inverts, :is()/:where() takes best match across alternativesPosition encoding for CSS spans: CssAnalysis spans (classes, IDs, selectors) are SFC-absolute byte offsets. CssSource is constructed with the style content origin, so syntax and projection spans are absolute from creation. Consumers use spans directly without adding any offset. StyleBlockAnalysis.content_offset is retained for documentation and slice operations.
verter_mcp)verter-mcp binary exposes Verter's full analysis, diagnostics, compilation, and scoring pipeline via MCP for AI agents. VerterMcpServer wraps VerterHost (with AnalysisScope::LSP), Linter, and ActionEngine. Tools auto-load via ensure_loaded(); template analysis triggers ensure_template_analysis() transparently. Cross-file tools iterate all loaded files (no ProjectIndex exposed from host). Scoring engine computes composite 0-100 quality scores from a11y, lint, template complexity, API surface, CSS health, and reactivity dimensions.
Both binaries (verter-mcp, and the LSP-decoupling twin verter-mcp-server) run the one shared entry body verter_mcp::run::run. The HTTP transport binds before its initial scan and announces the real bound port as a one-line stdout readiness record (verter_mcp::readiness, mirrored by packages/vue-vscode/src/mcpServer.ts); --client-pid arms the same ClientProcessGuard containment as the LSP. The VS Code extension spawns this standalone binary per LSP start attempt (createMcpServerLifecycle: awaited replacement, bounded crash respawn, provider-registration teardown on death) — see docs/contributing/lsp-mcp-decoupling.md.
verter_semantic::analysis is the shared static-analysis surface consumed by verter_session, diagnostics, and tooling. Compilation crate owns lowering and codegen; verter_session projects compiler and workspace state into these semantic snapshots.
Bitflags (u32) controlling which analysis passes run during file upsert.
Script (bits 0-7)
| Flag | Bit | Description |
|---|---|---|
IMPORTS | 0 | Import declarations |
BINDINGS | 1 | Variable/function/class declarations |
REACTIVITY | 2 | Ref/reactive/computed classification |
MACROS | 3 | defineProps/Emits/Model/Slots/Expose |
MACRO_TYPE_DEPS | 4 | Cross-file type references in macros |
VUE_API_USAGE | 5 | Track provide/inject/lifecycle/watcher calls |
EXPORT_SIGNATURES | 6 | Per-export hashes for smart invalidation |
FUNC_RETURNS | 7 | Analyze function return reactivity (for composables) |
Template (bits 8-15)
| Flag | Bit | Description |
|---|---|---|
TPL_COMPONENTS | 8 | Component usages + prop expressions |
TPL_BINDINGS | 9 | Which script bindings are used in template |
TPL_SLOTS | 10 | Slot definitions + usages |
TPL_REFS | 11 | Template ref attributes |
TPL_EVENTS | 12 | Event handler bindings |
TPL_CONSTNESS | 13 | Prop constness classification |
Style (bits 16-19)
| Flag | Bit | Description |
|---|---|---|
STYLE_CSS | 16 | Full CSS analysis (selectors, classes, IDs) |
STYLE_VBIND | 17 | v-bind() in styles |
STYLE_SCOPED | 18 | Scoped/module metadata |
STYLE_PSEUDOS | 19 | :deep/:global/:slotted |
Cross-file (bits 24-26)
| Flag | Bit | Description |
|---|---|---|
CROSS_RENDER_TREE | 24 | Build render tree from template analysis |
CROSS_PROVIDE | 25 | Provide/inject chain validation |
CROSS_PROP_CONST | 26 | Prop constness optimization |
Presets:
| Preset | Flags | Use Case |
|---|---|---|
BUILD | IMPORTS, BINDINGS, MACROS, MACRO_TYPE_DEPS, EXPORT_SIGNATURES, STYLE_VBIND, STYLE_SCOPED | Minimal overhead for compilation + smart invalidation |
BUILD_OPTIMIZED | BUILD + REACTIVITY, VUE_API_USAGE, TPL_COMPONENTS, TPL_BINDINGS, TPL_CONSTNESS, CROSS_RENDER_TREE, CROSS_PROVIDE, CROSS_PROP_CONST | Build with cross-file optimization |
LSP | All flags | Full analysis for completions, hover, diagnostics |
LINTER | IMPORTS, BINDINGS, REACTIVITY, MACROS, VUE_API_USAGE, TPL_COMPONENTS, TPL_BINDINGS, TPL_SLOTS, TPL_REFS, TPL_EVENTS | Script + template for lint rules |
ESSENTIAL | IMPORTS, BINDINGS, MACROS, MACRO_TYPE_DEPS, EXPORT_SIGNATURES | Script-only (legacy compat) |
Primary output of build_script_analysis(). Produced by a single OXC parse + AST walk.
| Field | Type | Description |
|---|---|---|
imports | Vec<AnalyzedImport> | All import declarations with source, bindings, spans |
bindings | Vec<AnalyzedBinding> | Top-level variable/function/class declarations |
macros | Vec<AnalyzedMacro> | Vue macro calls (defineProps, defineEmits, etc.) |
macro_type_deps | Vec<MacroTypeDep> | Cross-file type references used by macros, tiered by structural position (usage: MacroTypeDepUsage — Surface = argument root / intersection-union arms / extends heritage / alias chains, missing ⇒ error; Member = top-level member annotation, missing ⇒ warning + null degrade). References nested deeper are never collected (runtime codegen does not need them) |
flags | AnalysisFlags | Bitwise flags for O(1) queries |
exported_functions | Vec<AnalyzedExportedFunction> | Non-SFC exported functions (composable analysis). Carries name / is_default / params / is_async / composable only. It carries NO return-type field: the declared return type's reactive-wrapper identity is a resolution decision answered at demand time from the lowered typed IR plus a package-backed route proof (/type-resolution → Reactive-wrapper demand), never from annotation text on this DTO |
ReactivityKind: None | Ref | Computed | Reactive | MaybeRef | Mutable
Populated after compilation by converting RawTemplateData from verter_compiler.
| Field | Type | Description |
|---|---|---|
components | Vec<TemplateComponentUsage> | Components used in template with props and slots |
binding_occurrences | Vec<TemplateBindingOccurrence> | Script bindings referenced in template with spans |
defined_slots | Vec<DefinedSlot> | <slot> elements defined in template |
template_refs | Vec<TemplateRef> | ref="foo" attributes |
event_handlers | Vec<TemplateEventHandler> | @click, @input, etc. |
elements | Vec<TemplateElement> | Full element tree for linter traversal |
if_chains | Vec<IfChain> | v-if/v-else-if chains for duplicate detection |
prop_definitions | Vec<AnalyzedPropDefinition> | Props from defineProps |
emit_definitions | Vec<AnalyzedEmitDefinition> | Emits from defineEmits |
comment_directives | Vec<CommentDirective> | @verter:disable, @verter:todo, etc. |
Aggregates file-level usage into project-wide indexes:
provide(key)inject(key)Vue SFC Source
|
v
verter_compiler::compile()
|-- ScriptAnalysisSnapshot (from OXC parse during compilation)
|-- RawTemplateData (spans, binding refs, component tags)
|-- CssParsed* (v-bind spans, pseudo spans)
|
v
verter_session (conversion layer)
|-- RawTemplateData --> TemplateAnalysisSnapshot
|-- CssParsed* --> StyleBlockAnalysis
|-- Resolves import paths, populates resolved_canonical_id
|-- Updates ProjectIndex with file usage
|
v
Consumers (LSP, build, linter) query snapshots + ProjectIndex© pikax, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/architecture of pikax/verter.
Open the folder on GitHubat commit 858624d
Architecture next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Architecture this skillpikax/verter | 113 | — | ~5.6k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Create Docsvictorgarciaesgi/nuxt-typed-router | 413 | 2 repos | ~2.8k | Automated safety check: Pass | MIT | |
| MCP Server Builder with mcp-usemcp-use/mcp-use | 11k | — | ~923 | Automated safety check: Pass | Apache-2.0 | |
| Source Driven Developmentshashankswe2020-ux/whoop-mcp | 165 | 4 repos | ~2k | Automated safety check: Pass | MIT |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
victorgarciaesgi/nuxt-typed-router
Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.
mcp-use/mcp-use
Builds, modifies, debugs, migrates and verifies TypeScript MCP servers and MCP Apps with the mcp-use framework, treating the installed package's types as the source of truth.
shashankswe2020-ux/whoop-mcp
Grounds every implementation decision in official documentation.
OpenPetsHQ/openpets
A skill your agent uses whenever the user wants to build, extend, debug, test, validate, locally load, package, or publish an OpenPets plugin; work with the OpenPets Plugin SDK v3, plugin manifest…
pikax/verter
In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux.
pikax/verter
Generate copy-pasteable prompts for driving separate Claude Code sessions through refactor, review, or migration work.
pikax/verter
Build dependency chains, rebuild sequences, profiling with MCP, and Analysis MCP server setup for Verter
pikax/verter
Rust compiler pipeline, template codegen (VDOM/IDE), CodeTransform, cached directives, strict slots, IDE error recovery, style preprocessing, CompileTarget, compiler authority/policy/demand/admission
pikax/verter
CTO/manager-of-managers methodology for autonomous multi-train plans where the user says "you are the MoM/CTO", "orchestrate the whole plan", "drive the migration end-to-end", "manager-of-managers"…
pikax/verter
Rust performance optimization patterns: batch operations, allocation hierarchy, object pooling, CodeTransform API for vertercompiler
Works with
Categories
Verter codebase architecture: high-level module map, TypeScript packages, plugin system, CSS analysis, MCP server, static analysis types. Architecture is an agent skill from pikax/verter.
Architecture fits situations like: tasks that involve Static analysis and SAST.
Run `npx skills add pikax/verter --skill architecture -a claude-code`. Or copy the skill folder (.claude/skills/architecture in pikax/verter) into .claude/skills/architecture in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pikax/verter --skill architecture -a codex`. Or copy the skill folder (.claude/skills/architecture in pikax/verter) into .agents/skills/architecture in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pikax/verter --skill architecture -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/architecture, .gemini/skills/architecture, .github/skills/architecture and .opencode/skills/architecture in your project.
SKILL.md names no scripts, command-line tools or credentials: Architecture is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Architecture is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.6k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Architecture: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), Create Docs (victorgarciaesgi/nuxt-typed-router, 413 stars) and MCP Server Builder with mcp-use (mcp-use/mcp-use, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pikax (a GitHub user) maintains it in pikax/verter, which has 113 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 9, 2026.
Source: pikax/verter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.