smithery.ai

codebase-layout

Codebase organization for pikru. Use when you need to find where specific functionality lives.

First seen May 2, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,493 B
  • docs SUMMARY.md 117 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Pikru Codebase Organization

Top-Level Structure

  • src/ - Main pikru library (parsing and rendering)
  • crates/ - Supporting crates
  • vendor/pikchr-c/ - Original C implementation and test files
  • examples/ - Example programs
  • tests/ - Integration tests

Main Library (src/)

Entry Point

  • src/lib.rs - Public API, exports key types and functions

Parsing

  • src/parse.rs - Parser implementation (statement parsing, token handling)
  • src/ast.rs - AST types (Statement, Expr, ObjectClass, etc.)
  • src/types.rs - Core types (ClassName, Direction, EdgePoint, etc.)

Rendering

  • src/render/mod.rs - Main renderer logic

- Object placement and geometry - Text positioning (ljust/rjust logic at lines 1265-1550) - Variable scope and context management

  • src/render/eval.rs - Expression evaluation (positions, scalars, variables)
  • src/render/svg.rs - SVG generation (converts shapes to SVG elements)
  • src/render/geometry.rs - Shape geometry (boxes, circles, paths, files)
  • src/render/shapes.rs - Shape rendering (specific shape implementations)
  • src/render/types.rs - Render types (PObject, Style, PositionedText, etc.)
  • src/render/path_builder.rs - Path construction (line/arrow building)
  • src/render/context.rs - Render context (variable scopes, state)
  • src/render/defaults.rs - Default values (line width, font size, etc.)

Error Handling

  • src/errors.rs - Error types and reporting
  • src/macros.rs - Helper macros

Supporting Crates

crates/pikru-compare/

SVG comparison utilities for testing

  • src/lib.rs - Core comparison logic

- compareoutputs() - Main comparison function - CompareResult::ismatch() - Determines if test passes - Handles error matching, SVG parsing, tolerance

  • Used by: test harness, MCP server

crates/pikru-mcp/

MCP server for test running

  • src/tools.rs - MCP tool implementations

- runpikrutest() - Run single test, returns comparison - listpikrutests() - List available tests - debugpikrutest() - Run with trace output

  • src/main.rs - MCP server entry point

Test Files

Location

vendor/pikchr-c/tests/*.pikchr - Test input files from C implementation

Categories

  • test01-test81 - Numbered feature tests
  • autochop*.pikchr - Arrow chopping tests
  • Other specialized tests

Common Debugging Paths

Text Positioning Issues

  1. Check src/render/mod.rs:1265-1550 - ljust/rjust calculation
  2. Check src/render/svg.rs:294 - Text anchor assignment
  3. Check src/render/types.rs - PositionedText structure

Rendering Issues

  1. Check src/render/shapes.rs - Shape-specific rendering
  2. Check src/render/geometry.rs - Geometric calculations
  3. Check src/render/svg.rs - SVG element generation

Parsing Issues

  1. Check src/parse.rs - Parser logic
  2. Check src/ast.rs - AST node definitions

Test Comparison Issues

  1. Check crates/pikru-compare/src/lib.rs - Comparison logic
  2. Check tolerance constants (FLOATTOLERANCE, SIMILARITYTHRESHOLD)

Key Code References (cref comments)

Many functions include // cref: comments pointing to the original C implementation:

  • Format: // cref: functionname (pikchr.c:linenumber)
  • Use these to cross-reference with C implementation when debugging