Skip to content

Releases: Lap-Platform/LAP

v0.7.0

26 Mar 18:46

Choose a tag to compare

v0.7.0 -- Codex IDE Support

Added

  • Codex IDE support -- full --target codex support across all commands: init, skill-install, skill-uninstall, uninstall, check, pin, unpin, diff (Python + TypeScript)
  • skill-uninstall command -- remove individual skills by name, with cross-target lookup (all 3 IDEs)
  • uninstall command -- fully remove LAP from your IDE: skills, hooks, metadata, CLAUDE.md/AGENTS.md/Cursor rules
  • Codex curl-first workflow -- generated skills and builtin Codex SKILL.md use curl for registry operations (search, get, check) instead of npx, which is unusably slow in Codex sandbox
  • Python --hook flag -- lapsh check --hook claude/cursor/codex outputs structured JSON for SessionStart hook injection (cross-language parity with TypeScript)
  • Output sanitization -- TypeScript CLI strips ANSI escapes and control chars from registry data (matches Python)
  • Cross-language parity tests -- 3 automated tests (P1-P3) read Python source constants and assert TypeScript matches, preventing drift

Fixed

  • Hook instruction mismatch -- Python and TypeScript LAP_HOOK_INSTRUCTION constants now identical, preventing CLAUDE.md removal failures
  • Robust markdown removal -- both Python and TypeScript fall back to regex if exact string match fails when removing LAP instruction blocks
  • Redundant pin/unpin fallback -- TypeScript cmdSetPinned now uses resolveSkillTarget() instead of duplicating cross-target lookup logic

v0.6.1

19 Mar 14:33

Choose a tag to compare

[0.6.1] - 2026-03-19

Fixed

  • Hook instruction clarity -- CLAUDE.md and Cursor rule now explicitly tell agents to include diff and pin commands in skill update notifications
  • Cursor rule instruction -- aligned with CLAUDE.md instruction wording

v0.6.0 -- Skill Auto-Update

19 Mar 11:44

Choose a tag to compare

What's New

Skill Auto-Update Detection

LAP now automatically checks if your installed API skills are outdated and notifies you at session start.

New commands:

  • lapsh check -- check installed skills for available updates
  • lapsh diff <skill> -- compare installed spec vs registry latest
  • lapsh pin <skill> / lapsh unpin <skill> -- skip or resume update checks

Session-Start Hooks

Running lapsh init now registers a session-start hook that checks for skill updates:

  • Claude Code: Adds hook to ~/.claude/settings.json + instruction to ~/.claude/CLAUDE.md
  • Cursor: Adds hook to .cursor/hooks.json + always-apply rule to .cursor/rules/

Cross-Platform Support

  • Claude Code and Cursor use different hook schemas -- LAP handles both
  • --hook claude / --hook cursor flag for platform-specific JSON output
  • --target claude added to all skill-install examples in skill docs

Bug Fixes & Hardening

  • Fix: return 404 (not empty 200) when spec exists in DB but LAP file missing from R2
  • Fix: store skillName in metadata to resolve folder name mismatch with registry name
  • Fix: pin/unpin search both claude/cursor metadata before erroring
  • Fix: save raw fetched spec as reference (avoid lossy parse-serialize roundtrip in diff)
  • Fix: hook format uses correct schema for each platform (Claude Code nested vs Cursor flat)
  • Security: enforce HTTPS for registry URL, validate skill names, symlink protection, body size limits

Registry

  • New POST /v1/skills/check batch endpoint for lightweight version comparison

Tests

  • 42 new Python tests (tests/test_skill_update.py)
  • 40 new TypeScript tests (check, pin/unpin, metadata, diff, hooks)
  • 14 new registry tests (skills-check.test.ts)

Full Changelog: v0.5.3...v0.6.0

v0.5.3

18 Mar 15:59

Choose a tag to compare

What's New

  • Search scoring -- registry now scores against provider_slug and provider_domain fields, fixing queries like discord.com that previously returned no results
  • [community] badge in CLI search output for community-contributed specs (Python and TypeScript)
  • lapsh check -- check installed skills for available updates via batch registry API
  • lapsh pin/unpin -- pin skills to skip update checks, unpin to resume
  • lapsh diff -- diff installed spec vs registry latest, or two local LAP files
  • CI/CD -- TypeScript SDK test matrix (Node 18/20), npm publish now requires tests to pass

Full Changelog: v0.5.2...v0.5.3

v0.5.2

18 Mar 11:58

Choose a tag to compare

Bug Fixes

  • Fix: lapsh init no longer registers session-start hooks -- it only installs the LAP skill as intended. Hook registration was part of an unreleased auto-update feature that shipped prematurely in v0.5.1.

Notes

  • All packaging fixes from v0.5.1 remain (skills bundled correctly in both PyPI and npm)
  • check/pin/unpin/diff commands available but considered preview

v0.5.1

18 Mar 11:33

Choose a tag to compare

Bug Fixes

  • Critical: Fix npm package crash on npx @lap-platform/lapsh init -- dist/package.json was excluded from published package, causing Cannot find module '../package.json' error
  • Critical: Fix skills not bundled in PyPI wheel -- lapsh skill-install failed with "Built-in skill files not found" when installed via pip
  • Critical: Fix skills not bundled in npm package -- lapsh init could not find built-in skill files when installed via npx
  • Add prepublishOnly smoke test to npm build to prevent packaging regressions

New Features

  • lapsh check -- check installed skills for registry updates
  • lapsh pin <name> / lapsh unpin <name> -- pin/unpin skills to skip update checks
  • lapsh diff -- diff installed vs registry specs, or compare two local LAP files

Internal

  • Move skills directory into Python package (lap/skills/) for correct wheel packaging
  • TypeScript build now copies skills from canonical source at build time
  • Add .gitignore to TypeScript SDK

v0.5.0

18 Mar 10:22

Choose a tag to compare

[0.5.0] - 2026-03-18

Added

  • lapsh init command -- set up LAP in your IDE with one command. Auto-installs the bundled LAP skill to the correct directory
  • Cursor IDE support -- --target cursor flag for skill, skill-batch, skill-install, and init commands. Generates .mdc files with Cursor-specific frontmatter
  • IDE auto-detection -- detect_target() checks TERM_PROGRAM, CURSOR_TRACE_ID, PATH, project directories, and home directory to auto-detect Claude vs Cursor
  • --version flag for both Python and TypeScript CLIs
  • Full TypeScript SDK compiler parity -- all 6 compilers (AsyncAPI, GraphQL, Postman, Protobuf, AWS SDK, Smithy) now available in TypeScript with comprehensive tests
  • Cursor skill rule (skills/cursor/lap.mdc) -- dedicated skill file for Cursor with skill-install --target cursor instructions
  • CLI section in generated skills -- every generated skill now includes a ## CLI section with npx commands for updating and searching

Changed

  • skill-install now fetches LAP spec from registry and generates skills locally (instead of downloading pre-built bundles), enabling target-aware output
  • SkillOutput now includes main_file field -- callers use skill.file_map[skill.main_file] instead of hardcoded "SKILL.md"
  • Improved _slugify() to handle / and . characters
  • Reduced integration test corpus from 29 to 8 representative specs (test suite runs 4x faster)
  • replaceSection() in TypeScript now preserves original section name instead of hardcoding "Enhanced Skill Content"

Fixed

  • HTML tag leakage in @desc fields -- descriptions from upstream API specs were leaking raw HTML tags and entities into compiled LAP output
  • Missing Path import in skill.py -- detect_target() would crash at runtime
  • Home directory validation -- Cursor target path in TypeScript cmdInit no longer silently uses empty string when HOME/USERPROFILE are unset
  • Security: Smithy compiler uses execFileSync instead of execSync to prevent command injection

v0.4.8

16 Mar 08:23

Choose a tag to compare

Fixed

  • HTML tag leakage in @desc fields: Descriptions from upstream API specs (Etsy, eBay, AWS, Stripe, Azure, etc.) were leaking raw HTML tags and entities into compiled LAP output
  • Move _strip_html to shared strip_html in utils.py with html.unescape() to handle both raw tags and HTML entities (&lt;, &gt;, etc.)
  • Apply HTML stripping to all compilers: TypeScript OpenAPI, Python Postman, and Python Smithy (previously only Python OpenAPI had it)

Added

  • HTML entity decoding tests for the shared strip_html utility
  • Postman compiler HTML stripping tests
  • TypeScript OpenAPI HTML stripping tests (params, summaries, responses, request body, entities)

v0.4.7

12 Mar 17:20

Choose a tag to compare

[0.4.7] - 2026-03-12

Added

  • lapsh get <name>: Download a LAP spec from the registry by name
    • Supports -o for file output and --lean for lean variant
    • Available in both Python and TypeScript CLIs
  • Provider domain in search output: Text search results now show the provider domain (e.g. stripe.com) as a column between name and endpoints
  • url field in JSON search results: Each result now includes the full registry URL for fetching the spec

Fixed

  • Add User-Agent header to get command to prevent Cloudflare 403 errors

v0.4.6

12 Mar 13:29

Choose a tag to compare

[0.4.6] - 2026-03-12

Fixed

  • Wire up search command in TypeScript CLI (was missing from dispatcher)
  • TS CLI now supports: lapsh search <query> [--tag] [--sort] [--limit] [--offset] [--json]