{
 "schema": "aiblocks-page/1",
 "id": "agency-gis-web-gis-developer",
 "type": "agent",
 "name": "Web GIS developer agent",
 "summary": "Plan an interactive web map. Get the mapping library choice, data and tile plan, and mobile and speed checks for MapLibre, Leaflet or ArcGIS.",
 "headline": "Web GIS developer agent",
 "subhead": "Describe your data, what people should do on the map and the devices they use. The agent picks a mapping library, plans tiles, clustering and filters, and checks the map on phones and slow networks. You get a build plan and a checks list.",
 "job": {
  "id": "build-websites",
  "name": "Build websites and web apps"
 },
 "level": "intermediate",
 "thinking": "high",
 "tested": true,
 "updated": "2026-11-03",
 "first_published": "2026-10-26",
 "inputs": [
  {
   "type": "question",
   "required": true,
   "label": "Question",
   "what": "the problem, decision or piece of work you want help with, and what a good outcome looks like"
  },
  {
   "type": "map_data",
   "required": false,
   "label": "Map data",
   "what": "map data, such as GeoJSON, a shapefile, a GeoPackage, a raster or a point cloud, with its coordinate system and fields"
  }
 ],
 "outputs": [
  {
   "type": "plan",
   "required": true,
   "label": "Plan",
   "what": "a dated plan: what to do, in what order, with a decision rule for each step"
  },
  {
   "type": "audit_report",
   "required": true,
   "label": "Audit report",
   "what": "findings with evidence, severity, missing inputs and next actions"
  }
 ],
 "you_give": [
  "What the map should show and let people do, such as search, identify or measure",
  "Your data: type, format and size, such as 20,000 points in GeoJSON",
  "Who uses the map and on what devices",
  "The library or platform you already use, such as ArcGIS (optional)",
  "A live data source, such as a WebSocket or an API (optional)",
  "Sign-in needs, such as ArcGIS sign-in or API keys (optional)"
 ],
 "you_get": [
  "A mapping library choice with reasons",
  "A data plan: tiles, clustering and filters",
  "An interaction and layout plan for desktop, tablet and phone",
  "A live data plan, if you need one",
  "Code sketches, marked as drafts you have not run",
  "Speed and phone checks to run",
  "Open questions"
 ],
 "use_when": [
  "You have location data and want an interactive map on your website.",
  "Your map freezes or crawls with thousands of points.",
  "You must choose between MapLibre, Leaflet and the ArcGIS JavaScript API.",
  "You need live data on a map, such as vehicles or sensors."
 ],
 "skip_when": [
  "You need desktop GIS analysis or a map for print: use the GIS analyst.",
  "Your data is messy and needs cleaning or converting first: use the Spatial Data Engineer agent.",
  "You need 3D scenes or terrain: use the 3D map scene developer.",
  "You need map colors, labels and basemap design: use the Map designer."
 ],
 "output_sample": {
  "input": [
   "What the map should show and what people can do on it",
   "Your data type, format and size",
   "Who uses it and on what devices",
   "A live data source or sign-in needs (optional)"
  ],
  "prerequisites": [
   "A test web page where you can try the sketches",
   "An AI that takes a pasted profile, such as Claude, ChatGPT or Gemini"
  ],
  "output": [
   {
    "name": "Brief and assumptions",
    "contains": "The map's job, data and devices as understood, with assumptions and MISSING items."
   },
   {
    "name": "Library choice",
    "contains": "The mapping library, the reason, the trade-off and a runner-up."
   },
   {
    "name": "Data and tiles",
    "contains": "For each layer, whether it is served as tiles, clustered or filtered, and why."
   },
   {
    "name": "Interactions and layout",
    "contains": "Each feature on desktop and phone, with the loading state and legend."
   },
   {
    "name": "Live data",
    "contains": "How updates arrive and how the map shows them, when you need it."
   },
   {
    "name": "Performance checks",
    "contains": "Numbered checks for phones, slow connections and large layers, with what a pass looks like."
   },
   {
    "name": "Code sketches",
    "contains": "Short drafts for the map setup and layers, marked as not run."
   },
   {
    "name": "Open questions",
    "contains": "What is unknown and what each answer changes."
   }
  ]
 },
 "output_shape": "BRIEF AND ASSUMPTIONS\n  Map job <what it shows and does> | Data <type, format, size> | Devices <list>\n  Assumed: <list> | MISSING: <list>\n\nLIBRARY CHOICE\n  <library> | <reason> | <trade-off> | <runner-up>\n\nDATA AND TILES\n  <layer> | <how it is served: tiles, cluster or filter> | <why>\n\nINTERACTIONS AND LAYOUT\n  <feature> | <desktop> | <tablet or phone> | <loading and legend note>\n\nLIVE DATA\n  <source> | <how updates arrive> | <how the map shows them>\n\nPERFORMANCE CHECKS\n  <number> | <check> | <what a pass looks like>\n\nCODE SKETCHES (drafts, not run)\n  <name> | <short code>\n\nOPEN QUESTIONS\n  <question> | <what the answer changes>",
 "how_to_use": [
  "Download the pack and add it as a skill in your AI. Or paste SKILL.md into a new chat, then paste references/source-agent.md after it.",
  "Write your brief: what the map shows, your data type and size, who uses it and on what devices. Never paste real API keys. Use a placeholder.",
  "Say 'Plan this web map. Do not guess my data size.' Your AI asks once for what is missing.",
  "Read the library choice and data plan first. Change them if you must use a platform you already have.",
  "Build the sketches in a test page. The AI cannot run your map, so test on a real phone and a slow connection yourself.",
  "Bring back what you see, such as load time or console errors, and ask for fixes."
 ],
 "checks": [
  "The result addresses your actual task and cites the evidence used.",
  "Examples, role-play experience and targets are kept separate from verified results.",
  "Claims of tests, memory, tool access or completed actions match what actually happened."
 ],
 "next": [
  {
   "name": "Website speed tuner",
   "url": "https://useaiblocks.com/skills/website-speed-tuner",
   "why": "Website speed tuner"
  }
 ],
 "source": {
  "by": "Michael Sitarzewski and Agency Agents contributors",
  "repo": "msitarzewski/agency-agents",
  "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/gis/gis-web-gis-developer.md",
  "licence": "MIT",
  "original_name": "Web GIS Developer",
  "commit": "b37b5bb33b78f2c1d6567d98e25ca818e3259219"
 },
 "credits": [
  {
   "title": "Web GIS Developer",
   "by": "Michael Sitarzewski and Agency Agents contributors",
   "url": "https://github.com/msitarzewski/agency-agents/blob/b37b5bb33b78f2c1d6567d98e25ca818e3259219/gis/gis-web-gis-developer.md",
   "used": "Original agent profile, preserved in references/source-agent.md; AI Blocks adds setup and review instructions."
  }
 ],
 "files": [
  "LICENSE",
  "references/source-agent.md",
  "SETUP.md",
  "source.json"
 ],
 "links": {
  "page": "https://useaiblocks.com/agents/agency-gis-web-gis-developer",
  "markdown": "https://useaiblocks.com/agents/agency-gis-web-gis-developer.md",
  "json": "https://useaiblocks.com/agents/agency-gis-web-gis-developer.json",
  "instructions": "https://useaiblocks.com/skills/agency-gis-web-gis-developer/SKILL.md",
  "download": "https://useaiblocks.com/skills/agency-gis-web-gis-developer.zip",
  "api_item": "https://useaiblocks.com/api/v1/items/agency-gis-web-gis-developer",
  "api_document": "https://useaiblocks.com/api/v1/documents/agent/agency-gis-web-gis-developer",
  "mcp": "https://useaiblocks.com/mcp"
 }
}
