Security Stance
fjrevoredo/mini-diarium
Mini Diarium's opinionated security, encryption, and privacy stance.
Position encoding, span types, coordinate systems, path normalization tables for Verter's multi-layer architecture (OXC, Rust, LSP, FFI, VS Code)
$ npx skills add pikax/verter --skill position-encoding -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pikax/verter position-encoding --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/position-encoding .claude/skills/position-encoding && 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 "position-encoding" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/position-encoding into .claude/skills/position-encoding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "position-encoding", 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/position-encodingType 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 position-encoding -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pikax/verter position-encoding --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/position-encoding .agents/skills/position-encoding && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "position-encoding" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/position-encoding into .agents/skills/position-encoding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "position-encoding", 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 position-encoding -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pikax/verter position-encoding --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/position-encoding .cursor/skills/position-encoding && 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 "position-encoding" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/position-encoding into .cursor/skills/position-encoding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "position-encoding", 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/position-encoding--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 position-encoding -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pikax/verter position-encoding --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/position-encoding .gemini/skills/position-encoding && 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 "position-encoding" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/position-encoding into .gemini/skills/position-encoding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "position-encoding", 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 position-encodingInstalls 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 position-encoding -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/position-encoding .github/skills/position-encoding && 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 "position-encoding" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/position-encoding into .github/skills/position-encoding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "position-encoding", 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 position-encoding -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 position-encoding --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/position-encoding .opencode/skills/position-encoding && 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 "position-encoding" agent skill from https://github.com/pikax/verter/tree/main/.claude/skills/position-encoding into .opencode/skills/position-encoding/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "position-encoding", 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.
position-encodingPosition encoding, span types, coordinate systems, path normalization tables for Verter's multi-layer architecture (OXC, Rust, LSP, FFI, VS Code)
Position Encoding is an agent skill from pikax/verter. Position encoding, span types, coordinate systems, path normalization tables for Verter's multi-layer architecture (OXC, Rust, LSP, FFI, VS Code)
Its SKILL.md is about 4.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 Databases, covering Database schema design and React components. It works with Rust, Visual Studio Code and Vue.js. The repository describes itself as: Fast Rust-powered compiler, semantic extraction, and LSP for component frameworks. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e4f9d26. 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.
Position Encoding loads about 4.6k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 2,063 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 e4f9d26, republished under its MIT licence (© pikax). 2,063 words, ~4,624 tokens.
.claude/skills/position-encoding/SKILL.md (or your agent's skills folder).verter_span crate)All Rust span types are defined in crates/verter_span/src/lib.rs. Each type enforces a specific coordinate system at compile time:
| Type | Meaning | Serde? | Used Where |
|---|---|---|---|
Span | SFC-absolute byte offsets [start, end) | Yes (spanStart/spanEnd) | Analysis types, diagnostics, CSS analysis, CodeTransform, Raw* template data, CSS variable spans |
RelativeSpan | Byte offsets relative to a base stored elsewhere | No | CSS scanner internals, OXC binding extraction (Binding.span) |
PartialGeneratedSpan | Unresolved position in generated output (TSX) | No | TSGO response parsing before PositionMapper resolution |
GeneratedSpan | Resolved mapping: generated position + SFC origin | No | TSGO diagnostics after resolution, codegen error mapping |
Intra-process boundary newtypes (also in verter_span, no serde) used by the LSP PositionMapper and cross-file navigation stack. No From between source-side and generated-side types (no From<GeneratedByteRange> for SourceByteRange); LspPosition/TsPosition are distinct so a TSX position can never be passed where a Vue LSP position is expected.
| Type | Meaning |
|---|---|
SourceByteOffset / SourceByteRange | byte offset / [start,end) range into the original .vue source |
GeneratedByteOffset / GeneratedByteRange | byte offset / [start,end) range into the generated TSX |
GeneratedByteLen | length of a generated-TSX content region (content_offset domain) |
SourceUtf16Offset / GeneratedUtf16Offset | UTF-16 code-unit offsets (source / generated) |
LspPosition { line, character } | 0-based Vue source position, LSP-negotiated encoding (Vue side) |
TsPosition { line, character } | 0-based generated-TSX position (TSX side) |
Span (SFC-absolute). RelativeSpan, PartialGeneratedSpan, GeneratedSpan don't implement Serialize/Deserialize — putting them in a serializable struct is a compile error. Convert with to_absolute(base) before serialization.Span. Analysis snapshots, host results, diagnostic structs crossing crate boundaries use Span. RelativeSpan is intra-crate only (CSS scanner, OXC binding extraction).RelativeSpan is 8 bytes, same as Span. Base offset lives in context (field on parent struct, function parameter). Value is compile-time type safety, not runtime data.PartialGeneratedSpan → GeneratedSpan via resolution. Use PartialGeneratedSpan for raw TSGO byte offsets. After PositionMapper resolves SFC origin, use partial.resolve(origin_span) to get GeneratedSpan. For display use generated_span.origin.PositionMapper is a STRICT in-run mapper (crates/verter_lsp/src/documents/position_map.rs). tsx_to_vue(TsPosition) -> Option<SourceMapped> and vue_to_tsx(LspPosition) -> Option<GeneratedMapped> return Some only when the query lies strictly inside ONE mapped token's run (the next token on the line starts strictly after the query). No cross-token extrapolation, no snap-to-closest-preceding fallback — unmapped/synthetic content (_ctx./$setup. prefixes), gaps, or bridging into the next token return None. Within-run character precision IS preserved (in-run offset added to the run's mapped start), but only inside a single mapped run. A range maps only when BOTH endpoints resolve inside the SAME compatibility component — runs are pre-labelled at construction with a component_id; two runs share an id only when linked by an unbroken chain of runs contiguous in BOTH generated AND source space (same-line adjacency, or the multiline line-wrap equivalent). Generated-side adjacency alone is NOT sufficient: generated output relocates/repeats source (MoveOriginal, repeated v-model emission), so two generated-adjacent but source-discontiguous runs are DIFFERENT components and do not compose — runs_compatible is then an O(1) component_id comparison. Endpoints are therefore coupled (same component), never mapped independently. Guard: crates/verter_lsp/tests/cases/position_mapper_strict.rs (behavioural — including the generated-adjacent-but-source-discontiguous discriminator — + static ban_cross_token_extrapolation).Span::new(start, end) / RelativeSpan::new(start, end) / PartialGeneratedSpan::new(start, end)RelativeSpan::to_absolute(base: u32) -> Span — add base offsetSpan::to_relative(base: u32) -> RelativeSpan — subtract base offsetPartialGeneratedSpan::resolve(origin: Span) -> GeneratedSpan — resolve with SFC originGeneratedSpan::new(generated: Span, origin: Span) — create resolved mapping directlyslice(&self, source: &str) -> &str — on Span, RelativeSpan, PartialGeneratedSpanFrom<oxc_span::Span> for both Span and RelativeSpanLspPosition::new(line, character) / TsPosition::new(line, character); SourceByteRange::new(..) / GeneratedByteRange::new(..) (typed LSP/TSX coordinate wrappers)From conversions between span types, nor between source-side and generated-side coordinate wrappers — type safety enforced at compile timeAll CSS variable span fields use SFC-absolute Span:
| Type | Field | Meaning |
|---|---|---|
AnalyzedCustomProperty | name_span | Span of --name in declaration |
AnalyzedCustomProperty | value_span | Span of the value text after : |
CssVarReference | span | Span of entire var(...) expression |
CssVarReference | name_span | Span of variable name within var() |
CssVarFallback | span | Span of fallback text within var() |
CssVarManipulation | span | Span of DOM API call expression (e.g., setProperty(...)) |
Spans computed as content_offset + local_offset during CSS scanning, where content_offset is SFC-absolute byte offset of <style> block content start. For script-side CssVarManipulation, spans come from OXC adjusted by script block's SFC offset.
| Layer | Offset Format | Line/Col Base | Description |
|---|---|---|---|
| oxc_span | UTF-8 byte offset, relative to parse start | N/A (byte offsets only) | OXC parser spans are byte offsets from start of parsed source text |
verter Span | UTF-8 byte offset, absolute for the document | N/A (byte offsets only) | All stored Rust spans (span fields in analysis types, CodeTransform positions) are byte offsets from start of SFC source |
verter RelativeSpan | UTF-8 byte offset, relative to a base | N/A (byte offsets only) | CSS scanner internals (relative to style content start), OXC bindings (relative to expression start) |
| PositionResolver | N/A | 1-based line, 1-based UTF-16 column | cursor/position.rs — returns 1-based. Subtract 1 before passing to source maps or LSP |
| Source maps | N/A | 0-based line, 0-based column | VLQ-encoded. source_map.rs converts from PositionResolver via (line - 1, col - 1) |
| LSP Protocol | Negotiated (UTF-8/UTF-16/UTF-32) | 0-based line, 0-based character | Position { line: 0, character: 0 } = first char. LineIndex handles conversion |
| VS Code API | UTF-16 code units | 0-based line, 0-based character | new Position(0, 0) = first char. Matches LSP UTF-16 |
| verter_ffi | UTF-16 code units | N/A (byte offsets only) | NAPI/WASM boundary always communicates in UTF-16 offsets. Reference: crates/verter_ffi/src/convert.rs:byte_offset_to_utf16() |
| verter_lsp | Negotiated encoding (UTF-8, UTF-16, or UTF-32) | 0-based | LSP negotiates encoding with client during initialize(). All positions use negotiated encoding |
cursor/position.rs): offset_to_line_and_col() and offset_to_line_col() return (1-based line, 1-based column). Always subtract 1 before passing to source maps or LSP.Position { line: 0, character: 0 } is the first character.new Position(0, 0) is the first character.capabilities.general.positionEncodings from client during initialize()ServerCapabilities.position_encodingCRITICAL: The negotiated encoding MUST be used everywhere that produces LSP positions (diagnostics, hover ranges, completion positions, etc.). This includes SyncCoordinator which publishes diagnostics after typing stops — it shares the encoding via Arc<RwLock<PositionEncodingKind>> with the server. Default is UTF-16 (per LSP spec) until initialize() negotiates.
Rust-internal code should prefer UTF-8 byte offsets. LSP boundary code must convert to negotiated encoding. JS/VS Code always uses UTF-16.
Standard LSP positions (line:character): handled by LineIndex in documents/line_index.rs.
Custom protocol data (analysis spans): converted at LSP boundary before serialization.
Two index shapes, one conversion implementation. verter_type_runtime::codec exposes an owning
LineIndex (copies the source; for an index stored beyond the buffer's life, e.g. the per-document
index in documents/mod.rs) and a borrowing SourceIndex<'a> (owns only the line-start table). Both
delegate to the same private conversion core, so they cannot disagree about an encoding, a bound
check, or a clamp. A caller converting more than one position against one immutable source — a
diagnostic pull, a semantic-token stream, an inlay-hint or highlight batch, a rename/code-fix
batch, a span's two endpoints — builds ONE SourceIndex and converts every endpoint through it;
the per-call convenience functions rescan the source each time. A response whose endpoints span
several target files (definition/references locations, rename and code-action edits) resolves each
distinct target's content (snapshot, then disk) and indexes it once, through
contents_snapshot::{with_target_index, convert_per_target}; results keep the response order.
Each index offers both conventions explicitly: clamped_position_to_offset fails OPEN (out-of-range
clamps to EOF — the navigation-sentinel default) and checked_position_to_offset fails CLOSED
(rejects a past-EOF line, a column past the line's end, and a column inside a surrogate pair).
Edit-applying and secondary-link paths must use the checked converter; a clamped wrong offset
corrupts a file or forges a bogus "see declaration" link at EOF.
| Boundary | Pattern | Reference Implementation |
|---|---|---|
| Rust internal → NAPI/WASM | byte_offset_to_utf16() | crates/verter_ffi/src/convert.rs:281 |
| Rust internal → LSP client | Negotiated encoding conversion | crates/verter_lsp/src/documents/mod.rs |
| LSP Position → byte offset | LineIndex::position_to_offset() | crates/verter_lsp/src/documents/line_index.rs |
| Byte offset → LSP Position | LineIndex::offset_to_position() | crates/verter_lsp/src/documents/line_index.rs |
| Provider response batch → byte offsets | One SourceIndex per source snapshot, reused for every endpoint | crates/verter_type_runtime/src/codec.rs |
| Multi-file provider response → byte offsets | One content resolution + index per distinct target | crates/verter_type_runtime/src/contents_snapshot.rs |
| TSGO response range → byte offsets | parse_range_to_offsets() (navigation, clamped) / parse_range_to_offsets_strict() (edits, checked) over the batch index | crates/verter_type_runtime/src/tsgo/ipc.rs |
| tsserver response → byte offset | tsserver_pos_to_byte_offset_indexed() (clamped) / tsserver_pos_to_byte_offset_checked() (edits) over the batch index; 1-based wire positions | crates/verter_type_runtime/src/tsserver/ipc.rs |
VS Code negotiates UTF-16. Analysis offsets arrive as UTF-16 code units from file start. JS string indexing is UTF-16 native, so source.charCodeAt(offset) and source.length work directly. Use shared utf16OffsetToPosition() from packages/vue-vscode/src/utils.ts.
TSGO processes generated TSX which is always ASCII. For ASCII: byte offset == UTF-16 offset == UTF-32 offset. position_to_offset()/offset_to_position() in ipc.rs treat character as byte offset within line — correct for ASCII. Diagnostics from publishDiagnostics must resolve LSP positions to byte offsets using TSX content cache.
All file paths stored internally in canonical ID format. Normalization at entry boundaries (receiving paths); denormalization at exit boundaries (sending paths to external systems).
| Rule | Example |
|---|---|
| Forward slashes only | c:/Users/dev/App.vue (never c:\Users\dev\App.vue) |
| Lowercase Windows drive | c:/Users/... (never C:/Users/...) |
| No query strings | App.vue (not App.vue?vue&type=script) |
| No virtual suffixes | App.vue (not App.vue._VERTER_.bundle.ts) |
| UTF-8, no percent-encoding | /home/user/my project/App.vue (not my%20project) |
| Source | Function | Location |
|---|---|---|
| LSP client URI | uri_to_canonical_id_from_str() | verter_lsp/src/documents/mod.rs |
| File system / bundler path | canonicalize_id() | verter_session/src/id.rs |
| Bundler plugin | generateComponentId() | packages/unplugin/src/core/compiler.ts |
| CLI args | path_to_file_uri() | verter_lsp/src/main.rs |
| Pinned tool path (same-file identity, rule 5) | normalize_tool_path() | verter_dx_baseline/src/provider.rs |
| Target | Pattern | Location |
|---|---|---|
| LSP client (file URI) | file:/// + canonical ID | verter_lsp/src/features/definition.rs |
| TSGO type provider | path_to_file_uri() | verter_lsp/src/main.rs |
| File I/O | std::path::Path::new(canonical_id) | OS handles both / and \ on Windows |
canonicalize_id() or uri_to_canonical_id_from_str() before storage or comparisonfile:// URIs or OS paths only when sending to external systemscanonicalize_path (verter_span/src/path.rs) is pure string normalization — slashes, drive case, //?/ prefix, trailing slash — and never touches the filesystem, so it cannot reconcile two canonical spellings of ONE file. When a comparison asks "is this the SAME FILE" (tool-root pinning, artifact identity, dedup), resolve the filesystem identity at the entry boundary — through NativeFs::realpath (verter_workspace/src/native_fs.rs), the workspace's single disk boundary, degrading to string canonicalization when the path does not exist — and keep the comparison a pure == on the internal form. Resolving inside the comparison instead is a rule violation: it reintroduces normalization downstream of the boundary, where rule 2 says only canonical values live. Reaching for std::fs::canonicalize directly is also a violation of a different rule — the no_std_fs_outside_native_fs_or_allow_list / vfs_boundary_is_authoritative guards — and realpath already returns its result through canonicalize_path (so the Windows //?/ prefix is stripped) and memoizes per path.A pnpm workspace routinely gives one file several canonical spellings: packages/<pkg>/node_modules/<dep> is a symlink into node_modules/.pnpm/<dep>@<ver>/…, so the same tsserver.js is reachable both package-locally and through the store. Two spellings, one file, and string canonicalization equates neither.
This is also a platform-asymmetric trap, so it fails only in CI: the DX baseline pinned its tool root by the package-local spelling while discovery reported the store realpath, and baseline_tool_root_mismatch fired on every Linux run while Windows passed. Anything that compares "did I get the file I pinned" is exposed — and a spelling comparison is not merely weaker, it is wrong in both directions.
Identity resolution does not loosen a strictness gate: two genuinely different files still resolve apart. What it removes is a false negative on one file under two names. Where a gate must stay faithful to what a shipped component passes (e.g. the harness advertising the same --tsdk the VS Code extension passes), keep advertising the spelled path and resolve identity on the comparison's ingress instead — do not rewrite what is advertised.
The asymmetry cuts both ways in fixtures, too. tempfile::tempdir() hands back the temp path as spelled, and on macOS /var is a symlink to /private/var (as is /tmp on some Linux distros). A test that compares an identity-resolved output against an unresolved temp spelling passes only where the platform's temp root happens to be symlink-free. Resolve the fixture root ONCE up front and build every fixture path below it (real_temp_root in verter_dx_baseline/src/provider_tests.rs, the same shape native_fs.rs's own tests use); build the symlink explicitly when the symlinked spelling is the thing under test.
© 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/position-encoding of pikax/verter.
Open the folder on GitHubat commit e4f9d26
Position Encoding 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 |
|---|---|---|---|---|---|---|
| Position Encoding this skillpikax/verter | 112 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Security Stancefjrevoredo/mini-diarium | 308 | — | ~11k | Automated safety check: Pass | MIT | |
| Reactflow Workflowveloxbase/veloxdb | 646 | — | ~897 | Automated safety check: Pass | MIT | |
| Any Tdf Developmentany-tdf/any-tdf | 779 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Typescript Styletjx666/vscode-mcp | 106 | — | ~961 | Automated safety check: Pass | Custom licence | |
| Add Tauri Commanddevlint/GitWand | 180 | — | ~1.5k | Automated safety check: Pass | MIT |
fjrevoredo/mini-diarium
Mini Diarium's opinionated security, encryption, and privacy stance.
veloxbase/veloxdb
Build and harden React Flow diagram surfaces in VeloxDB using @xyflow/react patterns (nodes, edges, viewport, controls, interactions, performance).
any-tdf/any-tdf
Guide implementation, fixes, reviews, documentation, generation, and validation in the Any TDF monorepo across the shared core, STDF/Svelte, RTDF/React, VTDF/Vue, demos, sites, tooling, AI skill…
tjx666/vscode-mcp
TypeScript code style and repo conventions for VSCode MCP — inference vs explicit types, ESM import suffixes, zod schema contracts, async VSCode/Node APIs, JSON-safe IPC results, JSDoc for public…
devlint/GitWand
A skill your agent uses when the user wants to expose a Rust feature to the Vue frontend, add a Tauri IPC command, invoke something from a Vue component, or wire up any backend/frontend…
imartincei/CalcpadCE
Expert developer for Calcpad.Web/frontend - the TypeScript/Vue 3 frontend monorepo.
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
Position encoding, span types, coordinate systems, path normalization tables for Verter's multi-layer architecture (OXC, Rust, LSP, FFI, VS Code). Position Encoding is an agent skill from pikax/verter.
Position Encoding fits situations like: tasks that involve Database schema design; tasks that involve React components.
Run `npx skills add pikax/verter --skill position-encoding -a claude-code`. Or copy the skill folder (.claude/skills/position-encoding in pikax/verter) into .claude/skills/position-encoding in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pikax/verter --skill position-encoding -a codex`. Or copy the skill folder (.claude/skills/position-encoding in pikax/verter) into .agents/skills/position-encoding 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 position-encoding -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/position-encoding, .gemini/skills/position-encoding, .github/skills/position-encoding and .opencode/skills/position-encoding in your project.
SKILL.md names no scripts, command-line tools or credentials: Position Encoding 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.
Position Encoding is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k 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 Position Encoding: Security Stance (fjrevoredo/mini-diarium, 308 stars), Reactflow Workflow (veloxbase/veloxdb, 646 stars), Any Tdf Development (any-tdf/any-tdf, 779 stars) and Typescript Style (tjx666/vscode-mcp, 106 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 112 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 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.