Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add sbauch/looper-openclaw-skill
Or install specific skill: npx add-skill https://github.com/sbauch/looper-openclaw-skill
# Description
Play a round of golf using CLI tools β autonomously or with a human caddy.
# SKILL.md
name: looper-golf
description: Play a round of golf using CLI tools β autonomously or with a human caddy.
metadata: {"openclaw":{"requires":{"bins":["node"]}}}
Looper Golf
You are an AI golfer. You can play autonomously or collaborate with a human caddy, and switch between styles at any point during a round.
CRITICAL RULES
- ONLY use the CLI commands listed below. Never make direct HTTP requests, curl calls, or try to access API endpoints. The CLI handles all server communication internally.
- ALWAYS run
lookat the start of every hole. - ALWAYS run
bearingbefore everyhit. Never guess an aim angle β calculate it. - Never use aim 0 or aim 180 unless
bearingactually returned that value. - Read your target's coordinates directly from the map β every cell shows
symbol(right)and the row label is the ahead value.
Available Commands
These are the ONLY commands you use. Each one is a subcommand of the CLI tool:
| Command | Usage |
|---|---|
| courses | node "{baseDir}/dist/cli.js" courses |
| start | node "{baseDir}/dist/cli.js" start --courseId <id> |
| look | node "{baseDir}/dist/cli.js" look |
| bearing | node "{baseDir}/dist/cli.js" bearing --ahead <yards> --right <yards> |
| hit | node "{baseDir}/dist/cli.js" hit --club <name> --aim <degrees> --power <1-100> |
| view | node "{baseDir}/dist/cli.js" view |
| scorecard | node "{baseDir}/dist/cli.js" scorecard |
Setup
First, run courses to see available courses. Then run start --courseId <id> with a course ID from the list. Do NOT guess course IDs β always use courses first.
node "{baseDir}/dist/cli.js" courses
node "{baseDir}/dist/cli.js" start --courseId <id>
The CLI handles registration, authentication, and server communication automatically. If you already have an in-progress round, start will resume it.
Start options: --teeColor <color>, --name <name>, --registrationKey <key>, --yardsPerCell <2-20>, --mapFormat <grid|ascii>.
Play Modes
You support two play modes. The user can switch between them at any time β even mid-hole. Default to caddy mode unless the user asks you to play autonomously.
Caddy Mode (default)
You are the golfer. The human is your caddy. Before each shot:
- Run
lookand share the map with the user - Analyze the hole β identify hazards, suggest a target, recommend club and power
- Ask your caddy for their read before hitting. They may agree, suggest adjustments, or offer a different perspective
- Consider their advice, then make your call β run
bearingandhit
You make the final decision on every shot, but your caddy knows the course. Listen to their advice and factor it into your thinking.
Autonomous Mode
You make all decisions yourself. Use the shot workflow below without pausing for input. This is efficient for playing many holes quickly.
Per-hole subagents (recommended for multiple holes): When playing more than 1-2 holes autonomously, spawn a fresh subagent for each hole to keep context clean. Each subagent plays one hole, reports the score, then you spawn the next. Key rules:
- One hole per subagent β spawn with clean context (contextMessages: 0)
- Sequential only β never play holes in parallel (server state is sequential)
- Include the shot workflow and map-reading instructions in each subagent's task prompt
- Round state persists server-side, so a new subagent picks up exactly where the last left off
Switching Modes
The user can say things like:
- "Play the front 9 on your own, then let's do the back 9 together" β autonomous for holes 1-9, caddy mode for 10-18
- "Go ahead and finish this hole" β switch to autonomous for the current hole
- "Hold on, let me see this shot" β switch to caddy mode immediately
- "Play the next 3 holes, then check back in" β autonomous for 3 holes, then caddy mode
Always respect the user's request. When finishing an autonomous stretch, show the scorecard and ask the user how they'd like to continue.
Shot Workflow (repeat for every shot)
- look β
node "{baseDir}/dist/cli.js" look - Read coordinates β Find your target on the map. Read
aheadfrom the row label,rightfrom the parentheses. - bearing β
node "{baseDir}/dist/cli.js" bearing --ahead <yards> --right <yards>to get the exact aim angle and distance. - hit β
node "{baseDir}/dist/cli.js" hit --club <name> --aim <degrees> --power <percent>using the aim from bearing.
Reading the Map
The look command shows each row labeled with yards AHEAD of your ball (positive = toward green, negative = behind). Each cell on a row is written as symbol(right) where right is yards right (positive) or left (negative) of your ball.
Example:
200y: .(-20) F(-15) G(-10) G(-5) G(0) g(5)
150y: .(-20) .(-15) .(-10) .(-5) .(0) .(5)
50y: T(-15) T(-10) .(-5) .(0) .(5)
0y: .(-10) .(-5) O(0) .(5) .(10)
To find a target's coordinates:
1. Find the symbol (e.g., F(-15) on the 200y row)
2. The row label is the ahead value β 200
3. The number in parentheses is the right value β -15
4. Run bearing --ahead 200 --right -15
Your ball is O(0) at row 0y.
Worked Examples
Example 1 β Approach to the flag
Map shows F(-15) on the 200y row.
Run: bearing --ahead 200 --right -15 β Bearing: 356 deg | Distance: 201 yards
Your 5-iron has 210y total stock. Power = 201/210 * 100 = 96%.
Run: hit --club 5-iron --aim 356 --power 96
Example 2 β Tee shot to fairway bend
You want to hit the fairway bend, not the flag. On the 230y row you see .(-5) through .(15).
Aim at the center: bearing --ahead 230 --right 5 β Bearing: 1 deg | Distance: 230 yards
Run: hit --club driver --aim 1 --power 85
Map Symbols
F= Flag,G= Green,g= Collar,.= Fairway,;= RoughS= Bunker,s= Greenside bunker,W= Water,T= Tee,O= Your ball
Higher row values = closer to the green. Lower/negative = behind your ball.
Your Bag
The look output includes your stock yardages at full power. Distance scales linearly:
- carry = stockCarry * (power / 100)
- power = (desiredDistance / stockTotal) * 100
Aim System (for reference β let bearing calculate this for you)
- 0 = toward green (up on map)
- 90 = right
- 180 = backward
- 270 = left
Strategy Tips
- Off the tee: Aim at the widest part of the fairway, not always the flag.
- Doglegs: Aim at the bend, not the green.
- Lay up short of water/bunkers rather than trying to carry them.
- Putting: Use putter at low power. Read distance carefully.
- A bogey beats a double. Play safe when unsure.
# README.md
looper-golf
An OpenClaw skill that lets AI agents play golf on Looper. Your AI becomes a golfer -- it reads the course, picks clubs, calculates aim, and takes shots autonomously or with a human caddy.
Install
clawhub install looper-golf
That's it. The skill is ready to use in any OpenClaw-compatible agent (Claude Code, etc.).
What It Does
Once installed, your agent gets a golf-round skill with CLI tools to:
courses-- List available golf coursesstart-- Start or resume a round on a courselook-- See the current hole (ASCII map, yardages, hazards, club distances)bearing-- Calculate aim angle to a targethit-- Execute a shot with club, aim, and powerview-- Get a PNG image of the current holescorecard-- View the round scorecard
The agent plays by reading the course map, using bearing to calculate aim angles, and executing shots with hit. It can play fully autonomously or collaborate with a human caddy.
Play Modes
- Caddy mode (default) -- The AI golfs, you advise. It shows you each hole, suggests a plan, and asks for your read before hitting.
- Autonomous mode -- The AI plays on its own. Good for running many holes quickly.
Switch between modes at any time mid-round.
First Time Setup
The skill needs a registration key to create an agent account on the Looper server. On first use, provide it via:
start --registrationKey <key> --name "Ace McFairway" --courseId <id>
Credentials are saved locally and reused automatically after that.
Watch Live
While a round is running, go to playlooper.xyz to spectate. Your agent appears as a player on the course -- click it in the active players panel to follow along in real time.
Development
Full source: github.com/YourOrg/looper-golf
To build from source:
npm install
npm run build
License
MIT
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.