pm-team/skills/lerian-map-management/SKILL.md
Manage the Lerian Map platform — maintain products, features, iterations, and delivery roadmaps via REST API. Enforces Lerian naming/tagging standards, keeps map data in sync with repository activity, and supports TPMs/PMs in keeping the map 100% accurate.
npx skillsauth add lerianstudio/ring ring:pm-team:lerian-map-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Connectivity: map.clotilde.lerian.net is on the internal Clotilde server — Tailscale must be active or all requests will fail (timeout / DNS not resolving).
Base URL: https://map.clotilde.lerian.net/api
Auth: Authorization: Bearer $API_KEY
API_KEY=$(security find-generic-password -a gandalf -s lerian-map-api-key -w)
| Entity | List | Create | Update | Delete |
|--------|------|--------|--------|--------|
| Products | GET /products | POST /products | PUT /products/{id} | DELETE /products/{id} |
| Features | GET /features?productId=&status=&iterationId= | POST /features | PUT /features/{id} | DELETE /features/{id} (soft) |
| Iterations | GET /iterations | POST /iterations | PUT /iterations/{id} | DELETE /iterations/{id} (soft) |
Import delivery roadmap:
curl -s -X POST https://map.clotilde.lerian.net/api/features/{id}/import-roadmap \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"markdown": "<roadmap content>", "startDate": "YYYY-MM-DD", "endDate": "YYYY-MM-DD"}'
Format: <Domain> - <Capability> or a single noun when unambiguous.
Examples: Midaz Console, Plugin PIX, Fees, Reporter.
Format: imperative action phrase — concise, no filler words.
Balance Update Refactor, Multi-Tenant RabbitMQ, Rate Limit Middlewarefeat: add new feature for X, improve the X thing, WIP: balanceMax length: 80 characters.
To enable automatic status sync via Ring agents, PRs and commits must reference the map feature ID in the title or body:
feat(reporter): add dashboard with reminders [map:#18]
Tag format: [map:#<featureId>] — include in PR title or first line of body.
This allows Ring's delivery-status-tracking to auto-match PRs to features without manual input.
| Status | Meaning | Evidence Required |
|--------|---------|-------------------|
| planned | Scoped, not started | Feature created, no PRs |
| in_progress | Active development | Open PR or commits on feature branch |
| completed | Shipped | PR merged to main/master or release tag |
| delayed | Past endDate, not completed | endDate passed + no completion evidence |
Never mark completed without a merged PR or release as evidence.
Sprint YYYY-MM-DD / YYYY-MM-DD (start/end of the iteration window).Q1 2026 · Wave 1 for quarterly cadences.iterationId assigned. Features without iteration = scheduling debt.When importing a delivery roadmap (/import-roadmap), the markdown must follow the format from ring:pre-dev-delivery-planning. Key requirements:
YYYY-MM-DD).### Taura Security Review
- Owner: Security (Taura)
- Start: YYYY-MM-DD
- End: YYYY-MM-DD
- Depends on: [implementation tasks]
Adjust endDate on the feature to account for the Taura window — never ship before security sign-off.
The Lerian Console is a transversal product: its features are owned and developed by the domain teams (Midaz, PIX, Reporter, etc.), not a dedicated Console team.
When creating Console features in the map:
productId to the Console product ID.repositoryPath to the owning team's repo (e.g., LerianStudio/midaz-console).Console: Balance Visualization not just Balance Visualization.Never register a Console subproduct or plugin as a standalone product — it creates duplicate tracking and breaks portfolio visibility.
Run periodically (weekly or before weekly/planning meetings) to surface gaps:
API_KEY=$(security find-generic-password -a gandalf -s lerian-map-api-key -w)
# Features with no iteration assigned
curl -s -H "Authorization: Bearer $API_KEY" \
"https://map.clotilde.lerian.net/api/features" \
| jq '[.[] | select(.iterationId == null and .status != "completed")]'
# Features past endDate still in_progress or planned
TODAY=$(date +%Y-%m-%d)
curl -s -H "Authorization: Bearer $API_KEY" \
"https://map.clotilde.lerian.net/api/features" \
| jq --arg today "$TODAY" \
'[.[] | select(.endDate != null and .endDate < $today and (.status == "planned" or .status == "in_progress"))]'
Report format (post to #product-team or weekly digest):
[map:#id] tag on any linked PR: listGET /products, match by name.status: planned, assign iterationId if sprint is known.startDate / endDate from delivery plan.repositoryPath to the owning repo.POST /features — capture returned id.[map:#<id>] to their PRs.[map:#<id>] tag.GET /features/{id}.in_progresscompleted (set endDate to merge date if not already set)plannedPUT /features/{id} with new status (and endDate if completing).docs/pre-dev/<feature>/delivery-roadmap.md).POST /features/{id}/import-roadmap with markdown + dates.GET /features/{id} — confirm startDate / endDate reflect plan.status to in_progress if development has started.development
Analyzes a Go service using lib-commons v2/v3 and generates a visual migration report showing every change needed to upgrade to lib-commons v4. Produces an interactive HTML page (via ring:visualize) and optionally generates refactoring tasks for ring:dev-cycle.
documentation
Patterns and structure for writing functional documentation including guides, conceptual explanations, tutorials, and best practices documentation.
development
Patterns and structure for writing API reference documentation including endpoint descriptions, request/response schemas, and error documentation.
documentation
Voice and tone guidelines for technical documentation. Ensures consistent, clear, and human writing across all documentation.