Agent skill

locque

Orient to the Locque repo, understand how to run and test programs, and follow key project conventions. Use this when starting work in the locque repo.

Stars 3
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/jaggederest/locque/tree/main/skills/locque

SKILL.md

Locque Repo Orientation

Use this skill when starting work in the locque repo or when you need a reference for project conventions, tooling, and the "definition of done."

What Locque is

Locque is a dependently typed, keyword-led language with a strict CBPV split (values vs computations), a 1:1 M-expr ↔ S-expr mapping, explicit effects, and no implicit coercions. It is built almost entirely by LLMs.

Project layout

Path Purpose
grammar.md Canonical surface syntax and S-expr mapping — source of truth
AGENTS.md Project conventions, tooling, working agreements
lib/ Standard library (.lq M-expr files)
test/ Tests — one rollup per lib/** module
interpreter/ Haskell interpreter — polecats normally do not touch this
Smythfile.lq Project config (error-tests list)
skills/ Skill files for agents (including this one)

Tooling

The primary tool is smyth (installed at ~/.local/bin/smyth):

bash
smyth test              # Run full test suite (entry: test/main.lq)
smyth test <file>       # Run one test file
smyth test --slow       # Show slowest test suites
smyth bench             # Run benchmarks (test/bench.lq)
smyth run <file>        # Type-check and run a .lq file
smyth dump core <file>  # Inspect elaborated output

Always run smyth test after any change — it is the gate for "done."

File conventions

  • Source: .lq (M-expr, human-authored). Do NOT handwrite .lqs.
  • Paths: lowercase onlylib/some/module.lq, test/some/module.lq
  • Every lib/**/*.lq must have a matching test/**/*.lq
  • Module name Some::Module maps to file lib/some/module.lq
  • Test module Test::Some::Module maps to test/some/module.lq

Syntax quick-reference

locque
# Definition
define transparent name as <Value>
define opaque       name as <Value>

# Function
define transparent inc as
  function x Natural returns Natural value
    Ar::add x 1
  end

# Computation value (effect-bearing)
define transparent main as compute
  perform (IO::print "hello")
end

# Data type
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

# Match
match opt of-type (Option A) as ignored returns A
  case Option::none as fallback
  case Option::some with x A as x
end

# Import and qualify
import string as S   # Use S::concat, S::eq, etc.
open S exposing concat end  # Then use concat directly

Key rules:

  • Qualification uses :: only (never .)
  • Application is prefix, left-associative
  • end closes every block (function, compute, match, data, module, open, bind, typeclass, instance, pack, unpack)
  • List literals: [] and [a, b] (commas required); empty lists need of-type [] (List A) when no type is in scope
  • Use ignored instead of _ for unused binders
  • Effects are explicit: computation T type, bridged by perform; sequences via bind name from comp then ... end

Writing tests

locque
import assert as A

module test::my_module contains
  define transparent run-tests as compute
    bind ignored from
      A::assert-eq Natural (Ar::add 1 2) 3
    then
      perform (IO::print "tests passed")
    end
  end
end
  • Use A::assert-eq with an explicit type argument
  • Add your test module to test/main.lq imports and the runner

What polecats do (and do not) change

Typical polecat work (library .lq files):

  • New library functions in lib/
  • New or updated tests in test/
  • Syntax fixes, refactors within .lq files
  • Adding/fixing data types, typeclasses, instances

Off-limits for polecats (interpreter):

  • interpreter/ — Haskell source. Do NOT modify unless the bead explicitly asks for interpreter changes. The interpreter is a separate build (GHC required) and is rarely the right place to fix library-level issues.
  • Do not add new primitives without explicit instruction from the bead.

Definition of done (checklist)

[ ] smyth test — all tests pass (no deletions to make tests pass)
[ ] New lib file has a matching test file
[ ] Paths are lowercase
[ ] No handwritten .lqs files
[ ] No changes to interpreter/ (unless bead explicitly requires it)
[ ] git status clean
[ ] gt done

Related skills

  • locque-authoring — detailed authoring rules: data/match forms, module syntax, CBPV rules, templates

Expand your agent's capabilities with these related and highly-rated skills.

jaggederest/locque

locque-authoring

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.

3 0
Explore
petekp/claude-code-setup

ubiquitous-language

Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD".

20 6
Explore
petekp/claude-code-setup

every-style-editor

This skill should be used when reviewing or editing copy to ensure adherence to Every's style guide. It provides a systematic line-by-line review process for grammar, punctuation, mechanics, and style guide compliance.

20 6
Explore
petekp/claude-code-setup

manage-codex

Autonomous Codex batch orchestrator. Use for "/manage-codex", "manage codex", "use codex", "dispatch to codex", or long-running Codex work.

20 6
Explore
petekp/claude-code-setup

seo-audit

When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," or "indexing issues." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema-markup. For AI search optimization, see ai-seo.

20 6
Explore
petekp/claude-code-setup

capture-learning

Analyze recent conversation context and capture learnings to project knowledge files (for project-specific insights) or skills/commands/subagents (for cross-project patterns). Use when the user asks to "capture this learning", "update the docs with this", "remember this for next time", "document this issue", "add this to CLAUDE.md", "save this knowledge", or "update project knowledge". Also triggers after resolving build/setup issues, discovering non-obvious patterns, or completing debugging sessions with valuable insights.

20 6
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results