Claude Code Plugins

Community-maintained marketplace

Feedback

locque-authoring

@jaggederest/locque
0
0

Author or update Locque .lq code and tests with the canonical M-expr syntax, CBPV rules, data/match forms, modules/imports/opens, and project conventions.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name locque-authoring
description Author or update Locque .lq code and tests with the canonical M-expr syntax, CBPV rules, data/match forms, modules/imports/opens, and project conventions.

Locque authoring

Use this skill when writing or editing Locque source or tests.

Sources of truth

  • grammar.md defines the canonical syntax and S-expr mapping.
  • AGENTS.md lists project conventions and tooling.

Workflow

  1. Prefer .lq M-expr files; do not handwrite .lqs.
  2. Keep paths lowercase. Every lib/** file must have a matching test/** file.
  3. Use Module::name qualification; open Alias exposing ... end is explicit only.
  4. Effects are explicit: computations are values via compute ... end, run via perform.
  5. Multiline constructs must end with end (function, compute, bind, match, data, typeclass, instance, module, open, pack, unpack).
  6. Data: define ... as data ... in TypeN ... end with constructors Type::Ctor; match uses case Type::Ctor.
  7. No implicit coercions; use of-type, lift, up, down, pack, unpack as needed.
  8. Use ignored instead of _ for unused binders.
  9. List literals are canonical: [] and [a, b] (commas required). Empty lists require of-type [] (List A) when no expected list type is in scope.

Test conventions

  • Use assert::assert-eq with an explicit type argument.
  • Run smyth test after changes.

Templates

Function:

# Assumes: import arithmetic as Ar
define transparent inc as
  function x Natural returns Natural value
    Ar::add x 1
  end

Data:

define transparent Option as data A Type0 in Type0
  case Option::none of-type Option A
  case Option::some of-type for-all x as A to Option A
end