Skills are the fastest way to make Loopy smarter. A skill is a Markdown file with YAML frontmatter. The agent sees skill names and descriptions upfront but only loads full content when relevant — no tokens wasted.
---name: my-conventionsdescription: Team coding conventions for our Spring Boot services---# InstructionsWhen working on this codebase:- Use constructor injection, never field injection- All REST endpoints return ProblemDetail for errors (RFC 9457)- Tests use @WebMvcTest with MockMvc, not @SpringBootTest- Entity IDs are UUIDs, never auto-increment
Next time you run Loopy in that directory, the agent discovers the skill automatically.
Slash commands let you define reusable prompts as Markdown files, following Claude Code’s ~/.claude/commands/ convention. Type /command-name in the chat and the agent executes the expanded prompt.
Create a .md file in your project or home directory:
.claude/commands/review.md
---name: reviewdescription: "Code review the current diff"---Review the staged changes (`git diff --cached`). For each file:1. Check for bugs, security issues, and performance problems2. Verify test coverage for new code paths3. Flag any style violationsSummarize findings as a table. $ARGUMENTS
YAML front matter — name and description fields. If no front matter, the filename becomes the name.
$ARGUMENTS substitution — replaced with whatever the user types after the command. /review focus on error handling substitutes “focus on error handling”.
Agent delegation — the expanded prompt is sent to the agent as if the user typed it.
---name: test-runnerdescription: Runs tests and reports pass/fail summarytools: Bash, Read---You are a testing specialist. When invoked:1. Run `./mvnw test` in the working directory2. Parse output for pass/fail/skip counts3. If tests fail, read the relevant test source files4. Report a concise summary: what passed, what failed, and why
The main agent delegates testing tasks to this subagent automatically based on the description field.
Context is preserved across run() calls by default:
LoopyAgent agent = LoopyAgent.builder() .workingDirectory(workspace) .maxTurns(80) .build();agent.run("plan a refactoring of the service layer");agent.run("now execute the plan"); // sees the previous conversation