What's a Skill?
Think of a skill as a set of instructions that teaches Giraffe AI when and why to do something — not how. The "how" already lives in the tools (the actual functions the AI can call, like updateSections or createGeoJSONLayer). Skills are the judgment layer sitting on top.
A useful analogy: if a tool is a wrench, a skill is the mechanic's know-how telling them which bolt to use that wrench on, and when to reach for it instead of a screwdriver.
Concretely, a skill is just a markdown file added to the AI's system prompt. It might say things like:
"If the user says 'assumptions,' update project-wide defaults — don't touch individual buildings."
"Only use
updateUsagesfor usage-type changes; useupdateSectionsfor physical building edits.""If a request is ambiguous between two tools, ask the user to clarify rather than guessing."
Without skills, the AI still has access to every tool — it just has to infer on its own when each one applies, which leads to more guessing and more mistakes (and more token use). Skills remove the guesswork by encoding your team's conventions directly into how the AI reasons.
Default Skills
Giraffe aiChat ships with some skills already encoded.
Choose which skills to use in your aiChat settings.
Toggle off unused skills in Settings to reduce token costs and keep the AI focused.
Core Behavior
The baseline system prompt covering tool activation rules, coordinate conventions, response formatting, and guardrails (never fetching credentials, verifying RPCs before use, always announcing tool families before acting). It's always active and governs how every other skill behaves.
Layers
Covers layer tree operations: showing/hiding layers, inspecting contents, filtering/highlighting features, and styling. Used whenever the user wants to manage what's visible or styled on the map.
Sections
The core building/geometry skill: creating, finding, updating, and deleting sections (buildings, landscape, etc.), plus the critical distinction between editing one building (updateSections) versus changing a usage type's assumptions (updateUsages). Also covers site boundary handling, copying features, and pulling geometry from layers into editable sections.
Usage Types
Defines the fixed list of valid usage types (buildingSection, landscape, road, etc.) and their properties (costs, dwelling mixes, hotel keys). Used only when the user explicitly wants to change project-wide assumptions/definitions, not individual buildings.
Summaries
A lightweight ad-hoc aggregation and charting skill using findSections with groupBy/metrics (e.g. "total GFA by usage" or a bar chart of cost by usage). It's for quick one-off queries, not the persistent analytics panel.
Giraffe Analytics
Manages the persistent analytics panel: tabs, categories, and calculated measures with strict rules around formula variable mapping (skipping "E"), operation types (SUM/COUNT/CONSTANT), and read-before-write patterns. Triggered by any mention of "analytics," "measures," or "reporting."
Content Library
Covers browsing and importing reusable content packs and Lightning Bolt flows into a project, with a strict search → preview → import workflow to avoid dumping heavy data into the chat. Includes hard rules around only using add_lightning_bolt_flow (never manual RPCs) to avoid broken flows.
GeoJSON Layers
Handles creating new map layers from raw GeoJSON data (e.g. parcel search results or imported files), including styling options like color, opacity, and 3D extrusion. Used whenever external or generated geometry needs to become a visible layer.
Regrid / Parcels (US)
Covers US nationwide parcel search via Regrid, including jurisdiction and field-based filtering (zoning, size, value, FEMA flood risk), result-size discipline, and styling quirks (Title Cased property keys). Includes several worked examples for common query patterns.
AU Parcels
The Australian equivalent of the Regrid skill: searching the national parcels database by address, region, zone, or area, with similar result-size discipline and map layer creation. Simpler than Regrid since it's a single unified API rather than two separate tools.
Active Skills
Skills are instructions in the system prompt that teach the AI when and why to use tools. Toggle them in Settings to control what the AI knows.
Skill | Description | Tokens |
Core BehaviorLOCKED | Identity, workflows, conventions, response format. Always active. | ~2,534 |
Layers | Layer operations: visibility, filtering, styling, organizing the layer tree. | ~1,674 |
Sections | Building CRUD: find, create, update, delete sections. Routing rules for updateSections vs updateUsages. | ~2,232 |
Summaries | Ad-hoc aggregation, charting, groupBy queries via findSections. | ~352 |
Usage Types | Usage type definitions, dwelling patterns, hotel keys, property reference, delete usages. | ~1,542 |
Content Library | Browse and import content packs and Lightning Bolt flows from the Giraffe library. | ~1,105 |
Giraffe Analytics | Analytics measures/line items, categories, tabs, formulas. Create/delete/reorder reporting. | ~2,540 |
GeoJSON Layers | Create map layers from GeoJSON data via createGeoJSONLayer RPC. Styling, 3D extrusion, labels. | ~787 |
Total | 8 skills active | ~12,764 |
To inspect or edit a skill, mouse over the row in the skill table. From there, select edit, download, or override.
Danger zone: if you edit core skills, aiChat may not behave as expected.
Writing a skill
Click "+ New" or drag a .md file under User Skills to create a skill.
A good skill has these parts:
## Skill Name One sentence saying what this skill covers and when the AI should use it. ### Suggested tools These tools should be used together for this workflow: 1. getLayers → see what's available 2. getLayerContents → inspect features 3. filterLayerFeatures → highlight matches ### When to use - "user says X" → do Y - "user says Z" → do W ### Rules - Always do A before B - Never do C without checking D ### Examples ``` toolName({ param: "value" }) ``` ### Gotchas - Common mistake and how to avoid itKey principles:
Be self-describing. Start with what the skill covers. The AI has no other way to know when to apply it.
Write "when/why", not "how". Tool parameter docs are already in the tool definitions. Skills should teach decision logic: "if the user says X, use tool Y because Z."
Use trigger phrases. List the exact words the user might say and map them to actions. This prevents the AI from guessing.
Include examples. Show the exact tool call with realistic parameters. The AI copies patterns.
Flag ambiguity. If a phrase could mean two things, tell the AI to ask the user to clarify.
Suggest tools. Add a "Suggested tools" section that lists the tools for a workflow in order. The AI will prefer these tools and follow the sequence. You can't add new tools, but you can tell the AI which existing ones to reach for and in what order.
Keep it short. Every token in a skill is sent on every message. Cut anything the AI doesn't need to make decisions.


