Releases: Lap-Platform/LAP
Releases · Lap-Platform/LAP
v0.7.0
v0.7.0 -- Codex IDE Support
Added
- Codex IDE support -- full
--target codexsupport across all commands: init, skill-install, skill-uninstall, uninstall, check, pin, unpin, diff (Python + TypeScript) skill-uninstallcommand -- remove individual skills by name, with cross-target lookup (all 3 IDEs)uninstallcommand -- 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
--hookflag --lapsh check --hook claude/cursor/codexoutputs 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_INSTRUCTIONconstants 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
cmdSetPinnednow usesresolveSkillTarget()instead of duplicating cross-target lookup logic
v0.6.1
[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
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 updateslapsh diff <skill>-- compare installed spec vs registry latestlapsh 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 cursorflag for platform-specific JSON output--target claudeadded 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
skillNamein metadata to resolve folder name mismatch with registry name - Fix:
pin/unpinsearch 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/checkbatch 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
What's New
- Search scoring -- registry now scores against provider_slug and provider_domain fields, fixing queries like
discord.comthat 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 APIlapsh pin/unpin-- pin skills to skip update checks, unpin to resumelapsh 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
Bug Fixes
- Fix:
lapsh initno 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
Bug Fixes
- Critical: Fix npm package crash on
npx @lap-platform/lapsh init--dist/package.jsonwas excluded from published package, causingCannot find module '../package.json'error - Critical: Fix skills not bundled in PyPI wheel --
lapsh skill-installfailed with "Built-in skill files not found" when installed via pip - Critical: Fix skills not bundled in npm package --
lapsh initcould not find built-in skill files when installed via npx - Add
prepublishOnlysmoke test to npm build to prevent packaging regressions
New Features
lapsh check-- check installed skills for registry updateslapsh pin <name>/lapsh unpin <name>-- pin/unpin skills to skip update checkslapsh 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
.gitignoreto TypeScript SDK
v0.5.0
[0.5.0] - 2026-03-18
Added
lapsh initcommand -- set up LAP in your IDE with one command. Auto-installs the bundled LAP skill to the correct directory- Cursor IDE support --
--target cursorflag forskill,skill-batch,skill-install, andinitcommands. Generates.mdcfiles 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 --versionflag 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 withskill-install --target cursorinstructions - CLI section in generated skills -- every generated skill now includes a
## CLIsection with npx commands for updating and searching
Changed
skill-installnow fetches LAP spec from registry and generates skills locally (instead of downloading pre-built bundles), enabling target-aware outputSkillOutputnow includesmain_filefield -- callers useskill.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
Pathimport inskill.py--detect_target()would crash at runtime - Home directory validation -- Cursor target path in TypeScript
cmdInitno longer silently uses empty string when HOME/USERPROFILE are unset - Security: Smithy compiler uses
execFileSyncinstead ofexecSyncto prevent command injection
v0.4.8
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_htmlto sharedstrip_htmlinutils.pywithhtml.unescape()to handle both raw tags and HTML entities (<,>, 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_htmlutility - Postman compiler HTML stripping tests
- TypeScript OpenAPI HTML stripping tests (params, summaries, responses, request body, entities)
v0.4.7
[0.4.7] - 2026-03-12
Added
lapsh get <name>: Download a LAP spec from the registry by name- Supports
-ofor file output and--leanfor lean variant - Available in both Python and TypeScript CLIs
- Supports
- Provider domain in search output: Text search results now show the provider domain (e.g.
stripe.com) as a column between name and endpoints urlfield in JSON search results: Each result now includes the full registry URL for fetching the spec
Fixed
- Add
User-Agentheader togetcommand to prevent Cloudflare 403 errors
v0.4.6
[0.4.6] - 2026-03-12
Fixed
- Wire up
searchcommand in TypeScript CLI (was missing from dispatcher) - TS CLI now supports:
lapsh search <query> [--tag] [--sort] [--limit] [--offset] [--json]