Agent skill

Loop Build

by getlago in getlago/lago-front

Phase 2 of the loop pipeline for lago-front. An agent skill from getlago/lago-front.

AGPL-3.0Auto-check: notesDevelopment

Install Loop Build

skills CLI
$ npx skills add getlago/lago-front --skill loop-build -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install getlago/lago-front loop-build --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/getlago/lago-front.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/loop-build .claude/skills/loop-build && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
loop-build
GitHub stars
163
Token cost
~3.5k tokens
SKILL.md length
1,738 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Phase 2 of the loop pipeline for lago-front. An agent skill from getlago/lago-front.

  • Works in 8 steps: Preflight — the worktree layout creates… → Create the worktree — worktree layout… → Record state: write state.md in the… → …
  • User says /loop-build <ISSUE-ID [--in-place]
  • SKILL.md covers Modes, Steps (fresh build), Steps (fix mode) and Hard rules
  • Calls git, pnpm and docker

What it does

Loop Build is an agent skill from getlago/lago-front. Phase 2 of the loop pipeline for lago-front. Takes an ISSUE-ID, reads spec.md from the run state dir, declares the minimal diff in plan.md, implements it in a dedicated worktree — or in the current checkout with --in-place (automatic inside a Conductor workspace) — and gets lint + types + translations gates green. Use when user says "/loop-build <ISSUE-ID [--in-place]" or the loop-run orchestrator invokes the build phase.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Git worktrees and Translation. The repository describes itself as: Open Source Metering and Usage Based Billing. The licence is AGPL-3.0.

When your agent uses it

  • User says /loop-build <ISSUE-ID [--in-place]
  • The loop-run orchestrator invokes the build phase

Example prompts

  • “/loop-build <ISSUE-ID [--in-place]”
  • “/loop-build”

Requirements

  • Docker

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Preflight — the worktree layout creates its workspace, in-place validates the one it was handed
  2. Create the worktree — worktree layout ONLY; in in-place skip this step entirely (nothing is created, lago-worktree is never called). Use…
  3. Record state: write state.md in the state dir (keyed on the bare ISSUE-ID). Key names are load-bearing — loop-review, loop-revise and…
  4. Plan before code — write plan.md in the state dir. It is the declaration scripts/loop-plan-check.sh and the reviewers compare the diff…
  5. Implement per spec.md and plan.md, inside the worktree: path from state.md only (in in-place that is the cwd). The checks below are capped…
  6. Tests — ALWAYS: after the implementation is complete, invoke the make-tests skill on the changes. NEVER hand-write tests.
  7. Gates (run in the worktree, all must pass)
  8. Report: diff stat, plan.md deviations, gates output summary. Do NOT commit — shipping happens in loop-run after review PASS.

What it can do on your machine

Read from SKILL.md and the folder at commit d4cb9fe. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • pnpm
    • docker

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, pnpm and docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Loop Build loads about 3.5k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 1,738 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~110
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:42
    Use the repo's own tool (handles branch, .env copy, pnpm install, port slot, dedicated docker containers, isolated API w

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from getlago/lago-front at commit d4cb9fe, republished under its AGPL-3.0 licence (© getlago). 1,738 words, ~3,510 tokens.

Download SKILL.mdSave it as .claude/skills/loop-build/SKILL.md (or your agent's skills folder).
name
loop-build
description
Phase 2 of the loop pipeline for lago-front. Takes an ISSUE-ID, reads spec.md from the run state dir, declares the minimal diff in plan.md, implements it in a dedicated worktree — or in the current checkout with `--in-place` (automatic inside a Conductor workspace) — and gets lint + types + translations gates green. Use when user says "/loop-build <ISSUE-ID> [--in-place]" or the loop-run orchestrator invokes the build phase.

Loop Build — phase 2 of loop-run

Input: an ISSUE-ID (e.g. <TEAM>-<N>). State dir: $LOOP_STATE_DIR/<ISSUE-ID>/ (default ~/.claude/loop-state/<ISSUE-ID>/). Requires spec.md there — if missing, stop and tell the operator to run loop-spec first.

Repo: a lago-front checkout. Two layouts, resolved by loop-run and defined in its ## Layout section — worktree (the default: front/ in the lago monorepo, worktrees in front-worktrees/ beside it) and in-place (the current checkout is the worktree; automatic inside a Conductor workspace, forced with --in-place). Invoked directly without loop-run, resolve it the same way: $CONDUCTOR_WORKSPACE_PATH set or --in-place passed → in-place, else worktree.

Nothing is fetched. spec.md carries the ticket and its sources; the coding styleguide is .agents/docs/frontend-coding-styleguide.md. No Linear, no Notion in this phase.

Modes

  • Fresh build: no review.md in the state dir, or it says PASS.
  • Fix mode: review.md (or adversarial.md) has verdict FAIL, or ci-failure.md was just written by loop-run — fix ONLY the numbered issues / CI failures listed there, nothing else. Reuse the existing worktree from state.md.

Steps (fresh build)

  1. Preflight — the worktree layout creates its workspace, in-place validates the one it was handed:

    worktree layout (all must hold, else STOP and ask the operator):

    • Main docker stack running: docker ps --format '{{.Names}}' | grep lago_front_dev.
    • Local main in front/ up to date: git -C front pull --ff-only origin main. If it fails (dirty checkout, diverged), STOP — never stash, reset, or force.
    • If a front-worktrees/<ISSUE-ID>-* dir already exists from an aborted run, STOP and ask — never delete or force.

    in-place layout:

    bash
    FRONT="$(git rev-parse --show-toplevel)"
    [ -x "$FRONT/scripts/iter-budget.sh" ] || { echo "not a lago-front checkout"; exit 1; }
    BRANCH="$(git rev-parse --abbrev-ref HEAD)"
    git fetch origin main
    • Branch guard: STOP if BRANCH is main (or $CONDUCTOR_DEFAULT_BRANCH), or is HEAD (detached). The loop only ever works on a feature branch.
    • git fetch origin main is required: the review phase diffs against origin/main. Fetch only — NEVER pull, rebase, merge, stash or reset (the checkout is the operator's).
    • State conflict: if state.md already exists for this ISSUE-ID and its worktree: is a different path, STOP — that state belongs to another checkout.
    • Docker stack (docker ps --format '{{.Names}}' | grep lago_front_dev): missing → warn only, never block. Gates run on the host.
  2. Create the worktree — worktree layout ONLY; in in-place skip this step entirely (nothing is created, lago-worktree is never called). Use the repo's own tool (handles branch, .env copy, pnpm install, port slot, dedicated docker containers, isolated API worktree):

    bash
    lago-worktree create <BRANCH> --from-front=main --from-api=main

    (lago-worktree = front/scripts/lago-worktree.sh; if the alias is unavailable, call the script directly.)

    Branch naming — <BRANCH> = <ISSUE-ID>-<topic-slug>: the Linear issue ID first, UPPERCASE, then a short kebab-case slug of the ticket's main topic (3-6 words), e.g. <TEAM>-<N>-swap-customer-overview-connection. No Linear ticket (edge case, e.g. tooling change requested directly) → just the kebab-case topic slug: clean-vite-cache-on-worktree-start. Worktree dir name = branch name. The session stays in the lago root — operate on the worktree via git -C / cd in subshells.

    In in-place the branch is whatever the checkout already carried and is never renamed (git branch -m is forbidden: Conductor persists the branch name in its own database, so a git-side rename desyncs its diff view and its archive-time branch deletion).

  3. Record state: write state.md in the state dir (keyed on the bare ISSUE-ID). Key names are load-bearing — loop-review, loop-revise and scripts/loop-restart.sh read them:

    markdown
    layout: <worktree | in-place>
    worktree: <absolute path — front-worktrees/<BRANCH> in worktree layout, the checkout itself in in-place>
    branch: <BRANCH>
    port: <front port printed by lago-worktree, or $CONDUCTOR_PORT in in-place>
    workspace: <$CONDUCTOR_WORKSPACE_NAME — in-place under Conductor only>
    container: <lago_front_wt_<SAN(branch)> | lago_front_ct_<SAN(workspace)> — omit when there is none>

    SAN = tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/_/g' on the branch (worktree layout) or on the workspace name (in-place).

  4. Plan before code — write plan.md in the state dir. It is the declaration scripts/loop-plan-check.sh and the reviewers compare the diff against; a new file or export that appears in the diff without appearing here triggers the adversarial pass:

    markdown
    # <ISSUE-ID> plan
    
    ## Files to change
    <path — one line: what changes>
    
    ## New files
    <path — why no existing file could host it, naming the sibling checked; or "none">
    
    ## New exports
    <symbol (path) — who consumes it, why inlining at the call sites is worse; or "none">
    
    ## Estimated size
    <N lines>
    
    ## Comments kept
    <one line per comment the diff keeps: `- <path> — constraint|why-not|trap — "<first words>"`; or "none">
    
    ## Deviations
    <appended during implementation: what changed from the plan above and the one-line reason>

    Start from spec.md ## Files to touch and ## Premises. The default for ## New files, ## New exports and ## Comments kept is "none": write the diff in your head without the abstraction first, and add it only when the inline version is larger. Read .agents/docs/frontend-coding-styleguide.md now, before the first edit.

  5. Implement per spec.md and plan.md, inside the worktree: path from state.md only (in in-place that is the cwd). The checks below are capped by scripts/skill-budget.sh.

    <!-- checks:start -->
    1. The plan is the scope. Reality diverges from spec.md or plan.md → append the divergence and its reason to plan.md ## Deviations and continue only if minor; otherwise stop and report. A premise spec.md marks unverified is not built around: build what the code shows, and say so in the report.
    2. Existing mechanism first. Before writing a component, hook, util or handler, search the design-system package (packages/design-system) and src/components/designSystem, the shared modules and the global layers (Apollo error link, toast, router wrappers) for one that already does the job - reuse or extend, never duplicate. When the spec says to mirror a sibling, diff YOUR dependency list against ITS: a dependency the sibling deliberately avoided (an aggregate hook, a wider query) needs a reason in the report. When the component used or touched has an entry in the lago-frontend-patterns skill's index, read it before writing the code.
    3. Translations (translations/base.json): search for an existing label with the same meaning before adding a key; new keys only when nothing fits, following the naming pattern; remove a key when the change removes its last usage.
    4. Comments are declared or deleted. scripts/diff-hygiene.sh flags every comment the diff adds unless plan.md ## Comments kept lists it with its category — constraint (an external rule the reader cannot see, identifier named), why-not (the obvious alternative is wrong), trap (an edit here breaks something elsewhere) — and refuses outright a comment inside a type/interface body, above an import, one that repeats the export's name, or one over 2 lines. Nothing else is a category: "explains the prop", "describes the step", "summarises the function" are deletions. Expect none on a typical diff.
    5. Never as unknown as your way past a type. A shared component's prop type: narrow to Pick<...> of the fields it reads. Two enums with identical members: an exhaustive Record<Source, Target> lookup, the only form that breaks the build when one enum grows.
    6. Copied state goes stale. A config snapshot (MainHeader.Configure), a drawer open({ children }), a child seeding useState from a prop: each copies a mutable value once. Either encode every field it reads in a key (remount / snapshot key) or pass a getter / read the prop. A parent that resets a value the child also stores is a silent wrong-save.
    7. A redirect in a useEffect does not stop its own render: pair every guard effect with an early return null on the same condition (after all hooks), and assert container.firstChild is null.
    <!-- checks:end -->

    GraphQL documents changed → pnpm codegen, and when the worktree's API runs a feature branch, keep only the hunks in src/generated/graphql.tsx that belong to your own operations (CI regenerates from lago-api main).

  6. Tests — ALWAYS: after the implementation is complete, invoke the make-tests skill on the changes. NEVER hand-write tests.

  7. Gates (run in the worktree, all must pass):

    • pnpm lint (use pnpm lint:fix first if there are formatting issues), pnpm types, pnpm translations:inspect, pnpm translations:ensure-consistency.
    • <front>/scripts/diff-hygiene.sh origin/main <worktree> <state dir>/plan.md — every added comment is declared with a category, none in a refused position. Flagged → delete it (the default) or, for a real constraint/why-not/trap, add its line to ## Comments kept.
    • <front>/scripts/loop-plan-check.sh <worktree> <state dir>/plan.md — every new file / export / re-export is declared. Exit 1 → either delete the abstraction or declare it in plan.md with its reason; never leave it undeclared. Exit 3 (all declared) passes the gate: it is loop-run's signal to run the adversarial pass on what was declared.
    • Scoped jest on the paths make-tests produced/touched. NEVER run the full suite (pnpm test with no path is FORBIDDEN).
    • A jest failure that does not reproduce in isolation or under --runInBand is load/cold-cache flake, not a regression: rerun before diagnosing or consuming a cycle.
  8. Report: diff stat, plan.md deviations, gates output summary. Do NOT commit — shipping happens in loop-run after review PASS.

Show full SKILL.md (472 more words)Show less

Steps (fix mode)

  1. Read the numbered issues from review.md / adversarial.md (or the failure report in ci-failure.md). ci-failure.md is already distilled by loop-run — never open the ci-raw-<N>.log it references; if it looks insufficient, grep that raw file for the one specific symbol you need, never read it whole.

  2. Escalating retry — attempt N>1 must not be a blind rerun of attempt N-1:

    • Read the full history too: review-history.md / ci-failure-history.md in the state dir.
    • Before coding, state in your working notes, per issue: what the previous attempt did and what THIS attempt does differently.
    • Same issue failed twice → the previous strategy is wrong: re-read spec.md acceptance criteria from scratch, broaden the investigation (callers, related components, existing tests), question the diagnosis itself. Consume the retry, but on a different path.
    • Oscillation check: a fix must not revert a change made by a PREVIOUS iteration. Detected → declare it, do NOT apply either oscillating fix again: find the third option one level up from where both were applied, and note it for loop-run's flywheel.
    • Never STOP early for a repeated failure — the 3-attempt budget belongs to loop-run and is enforced by <checkout>/scripts/iter-budget.sh.
  3. Fix only those issues, in the worktree: path from state.md. A fix does not earn a comment: if the reviewer misread the code, rename or split it; the reasoning goes in the report and the commit body. An [adversarial] issue is fixed by inlining or deleting, never by justifying the abstraction in plan.md after the fact.

    Operator input that changes behaviour (a design, a copy change, a new rule) is a spec amendment, not a patch: write the new acceptance criteria into spec.md FIRST and enumerate the state transitions they imply (mount / select / change / revert / user-edited / locked), then code.

  4. Re-run the gates (step 7 above). If the fix touched testable logic, re-invoke make-tests for the affected paths.

  5. Report what changed per issue number, including the "what's different from the previous attempt" line for each.

Hard rules

  • All edits in the worktree: path from state.md. In the worktree layout that means never the main front/ checkout; in in-place never $CONDUCTOR_ROOT_PATH and never another workspace.
  • in-place creates and destroys nothing: no lago-worktree, no branch rename, no Conductor workspace created, archived or renamed.
  • NEVER git stash there: the review phase leaves git add -N entries and the pop conflicts. Compare against the base with git show <base>:<path>, or in a throwaway git worktree.
  • No commit, no push, no PR in this phase. Never fetch Linear or Notion.
  • Never run the full jest suite. Tests only via the make-tests skill.
  • Two communication registers: messages to humans (chat report, notifications) = short, direct, plain language, no deep-tech jargon. Internal state files (spec.md, plan.md, review.md, histories, working notes) = written for the AI of a later iteration: dense, precise, full paths/symbols/error strings — optimize for machine effectiveness, not human readability.

© getlago, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/loop-build of getlago/lago-front.

Open the folder on GitHubat commit d4cb9fe

Compare with similar skills

Loop Build next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Loop Build compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Loop Build this skillgetlago/lago-front163—~3.5kAutomated safety check: NotesAGPL-3.0
Harness ContributingFairladyZ625/harness-anything225—~4.2kAutomated safety check: PassAGPL-3.0
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Migrate Core Code to Submodulestinyhumansai/openhuman42k—~2.6kAutomated safety check: PassGPL-3.0
Finishing A Development Branchfarm-fe/farm5.6k34 repos~1.8kAutomated safety check: PassMIT
PonytailDavidObando/gsharp5658 repos~1.7kAutomated safety check: PassMIT

Similar skills

  • Harness Contributing

    FairladyZ625/harness-anything

    Contribute a public change to Harness Anything from a GitHub issue through an isolated worktree, scoped tests, manifest-selected gates, a complete bilingual PR body, review triage, and maintainer…

    225 GitHub stars~4.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Migrate Core Code to Submodules

    tinyhumansai/openhuman

    Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.

    42k GitHub stars~2.6k tokensUpdated today
    DevelopmentAuto-check passed
  • A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…

    5.6k GitHub starsUsed in 34 repos~1.8k tokens
    DevelopmentAuto-check passed
  • Ponytail

    DavidObando/gsharp

    Forces the laziest solution that actually works, simplest, shortest, most minimal.

    565 GitHub starsUsed in 8 repos~1.7k tokens
    DevelopmentAuto-check passed
  • Git Worktree Cleanup

    lobehub/lobehub

    Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.

    83k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed

More from getlago/lago-front

All 17 skills in this repo
  • Babysit

    getlago/lago-front

    A skill your agent uses when asked to babysit, monitor, shepherd, or keep working on a GitHub pull request until it is green, review-ready, approved, mergeable, or ready to merge.

    163 GitHub stars~5.2k tokensUpdated today
    Auto-check passed
  • Cve Doctor

    getlago/lago-front

    Triage a CVE / Dependabot alert in a JS/TS project and recommend the least-invasive fix.

    163 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Extract Section To Drawer

    getlago/lago-front

    Extract a Formik form section into a TanStack Form drawer with Zod validation, following the plan form migration pattern.

    163 GitHub stars~4k tokensUpdated today
    Auto-check: notes
  • Loop Clean

    getlago/lago-front

    Cleanup phase of the loop pipeline for lago-front, for the worktree layout only.

    163 GitHub stars~816 tokensUpdated today
    Auto-check passed
  • Docker Expert

    getlago/lago-front

    You are an advanced Docker containerization expert with comprehensive, practical knowledge of container optimization, security hardening, multi-stage builds, orchestration patterns, and production…

    163 GitHub starsUsed in 10 repos~3.6k tokens
    Auto-check passed
  • Loop Flywheel

    getlago/lago-front

    Harvest phase of the loop pipeline for lago-front. An agent skill from getlago/lago-front.

    163 GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Categories

Questions about Loop Build

What does Loop Build do?

Phase 2 of the loop pipeline for lago-front. An agent skill from getlago/lago-front. Loop Build is an agent skill from getlago/lago-front. Phase 2 of the loop pipeline for lago-front.

When should I use Loop Build?

Loop Build fits situations like: user says /loop-build <ISSUE-ID [--in-place]; the loop-run orchestrator invokes the build phase.

How do I install Loop Build in Claude Code?

Run `npx skills add getlago/lago-front --skill loop-build -a claude-code`. Or copy the skill folder (.agents/skills/loop-build in getlago/lago-front) into .claude/skills/loop-build in your project. Claude Code loads it when a task matches its description.

How do I install Loop Build in Codex?

Run `npx skills add getlago/lago-front --skill loop-build -a codex`. Or copy the skill folder (.agents/skills/loop-build in getlago/lago-front) into .agents/skills/loop-build in your project. Codex loads it when a task matches its description.

Can I use Loop Build in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add getlago/lago-front --skill loop-build -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/loop-build, .gemini/skills/loop-build, .github/skills/loop-build and .opencode/skills/loop-build in your project.

What does Loop Build need to run?

Going by SKILL.md and its folder, Loop Build needs the command-line tools its instructions call (git, pnpm and docker). Our summary lists: Docker.

Does Loop Build access the network?

SKILL.md contains no URLs. Its commands use git and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Loop Build safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Loop Build use?

Loop Build is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Loop Build use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Loop Build?

Skills that share tags, products or a category with Loop Build: Harness Contributing (FairladyZ625/harness-anything, 225 stars), Finishing a Development Branch (obra/superpowers, 296k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars) and Finishing A Development Branch (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Loop Build?

getlago (a GitHub organization) maintains it in getlago/lago-front, which has 163 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 8, 2026.

Source: getlago/lago-front on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.