permit-pulse — for Claude Code permit-pulse, MultiModalAgentsHackathon, community, for Claude Code, ide skills, @rt.function_node, rt.agent_node, rt.Flow, $limit, $offset

v0.2.0

关于此技能

适用场景: Ideal for AI agents that need permitpulse — project skill. 本地化技能摘要: # PermitPulse — Project Skill Keep this file current. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

功能特性

PermitPulse — Project Skill
Keep this file current. Every time you add a feature, change architecture,
or fix a significant bug, update the relevant section below. This is the
onboarding doc for every future LLM session.
What Is PermitPulse?

# 核心主题

kvn8888 kvn8888
[0]
[0]
更新于: 3/28/2026

Killer-Skills Review

Decision support comes first. Repository text comes second.

Reference-Only Page Review Score: 10/11

This page remains useful for teams, but Killer-Skills treats it as reference material instead of a primary organic landing page.

Original recommendation layer Concrete use-case guidance Explicit limitations and caution Quality floor passed for review
Review Score
10/11
Quality Score
72
Canonical Locale
en
Detected Body Locale
en

适用场景: Ideal for AI agents that need permitpulse — project skill. 本地化技能摘要: # PermitPulse — Project Skill Keep this file current. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

核心价值

推荐说明: permit-pulse helps agents permitpulse — project skill. PermitPulse — Project Skill Keep this file current. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

适用 Agent 类型

适用场景: Ideal for AI agents that need permitpulse — project skill.

赋予的主要能力 · permit-pulse

适用任务: Applying PermitPulse — Project Skill
适用任务: Applying Keep this file current. Every time you add a feature, change architecture,
适用任务: Applying or fix a significant bug, update the relevant section below. This is the

! 使用限制与门槛

  • 限制说明: Pitch: Every major real-estate decision in San Francisco depends on
  • 限制说明: Requires repository-specific context from the skill documentation
  • 限制说明: Works best when the underlying tools and dependencies are already configured

Why this page is reference-only

  • - Current locale does not satisfy the locale-governance contract.

Source Boundary

The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.

评审后的下一步

先决定动作,再继续看上游仓库材料

Killer-Skills 的主价值不应该停在“帮你打开仓库说明”,而是先帮你判断这项技能是否值得安装、是否应该回到可信集合复核,以及是否已经进入工作流落地阶段。

实验室 Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

常见问题与安装步骤

以下问题与步骤与页面结构化数据保持一致,便于搜索引擎理解页面内容。

? FAQ

permit-pulse 是什么?

适用场景: Ideal for AI agents that need permitpulse — project skill. 本地化技能摘要: # PermitPulse — Project Skill Keep this file current. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

如何安装 permit-pulse?

运行命令:npx killer-skills add kvn8888/MultiModalAgentsHackathon/permit-pulse。支持 Cursor、Windsurf、VS Code、Claude Code 等 19+ IDE/Agent。

permit-pulse 适用于哪些场景?

典型场景包括:适用任务: Applying PermitPulse — Project Skill、适用任务: Applying Keep this file current. Every time you add a feature, change architecture,、适用任务: Applying or fix a significant bug, update the relevant section below. This is the。

permit-pulse 支持哪些 IDE 或 Agent?

该技能兼容 Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer。可使用 Killer-Skills CLI 一条命令通用安装。

permit-pulse 有哪些限制?

限制说明: Pitch: Every major real-estate decision in San Francisco depends on;限制说明: Requires repository-specific context from the skill documentation;限制说明: Works best when the underlying tools and dependencies are already configured。

安装步骤

  1. 1. 打开终端

    在你的项目目录中打开终端或命令行。

  2. 2. 执行安装命令

    运行:npx killer-skills add kvn8888/MultiModalAgentsHackathon/permit-pulse。CLI 会自动识别 IDE 或 AI Agent 并完成配置。

  3. 3. 开始使用技能

    permit-pulse 已启用,可立即在当前项目中调用。

! 参考页模式

此页面仍可作为安装与查阅参考,但 Killer-Skills 不再把它视为主要可索引落地页。请优先阅读上方评审结论,再决定是否继续查看上游仓库说明。

Upstream Repository Material

The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.

Upstream Source

permit-pulse

# PermitPulse — Project Skill Keep this file current. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows. PermitPulse — Project Skill

SKILL.md
Readonly
Upstream Repository Material
The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.
Supporting Evidence

PermitPulse — Project Skill

Keep this file current. Every time you add a feature, change architecture, or fix a significant bug, update the relevant section below. This is the onboarding doc for every future LLM session.


1. What Is PermitPulse?

One-liner: An autonomous agent that ingests SF building-permit and violation data in real time, builds a growing knowledge base, and answers natural-language regulatory-intelligence queries for real-estate investors and developers.

Pitch: Every major real-estate decision in San Francisco depends on regulatory risk — permits, violations, inspection history — but that data is scattered across municipal systems. PermitPulse continuously fetches, normalizes, and indexes this data, then answers investor questions like:

  • "Show me all active violations within 500 feet of 123 Main St"
  • "What's the average permit approval time in District 6?"

The knowledge base improves with every query — a self-improving regulatory intelligence engine.

Target market: Real-estate investors, developers, title companies, insurance underwriters. The US building-permit data market alone serves a $2 T+ industry.


2. Tech Stack & Sponsor Tools

LayerTechnologyRole
Agent orchestrationRailtracks (Python)Define tools as @rt.function_node, agents as rt.agent_node, flows as rt.Flow
Knowledge layerSenso.ai Context OSIngest permit/violation docs, semantic search for RAG
Frontendassistant-ui (React)Chat interface with streaming responses
DeploymentDigitalOcean App PlatformHost backend + frontend
Backend frameworkFastAPIHTTP API that bridges frontend ↔ Railtracks agent
LLMGoogle Gemini 3.1 Flash Lite PreviewAgent reasoning
Data sourceSF DataSF / Socrata SODA APILive municipal data

Installed Shipables Skills

CoronRing/railtracks       1.0.0
senso-ai/senso-search      1.0.0
senso-ai/senso-ingest      1.0.0
assistant-ui/assistant-ui  1.0.0

3. Data Sources — SF DataSF (Socrata SODA)

Base URL: https://data.sfgov.org/resource/{dataset_id}.json Auth: Unauthenticated (throttled to 1 000 req/hr — sufficient for hackathon). Format: JSON + SoQL query language. Pagination: $limit / $offset, default 1 000 rows.

DatasetIDKey Join Field
Building Permits (primary)i98e-djp9permit_number, block+lot
Permit Contacts3mwf-svbhpermit_number
DBI Complaintsgm2e-btencomplaint_number, block+lot
Notices of Violationnbtm-fbw5complaint_number
Permit Addenda / Routing87xy-gk8dapplication_number

Key SoQL patterns

# Recent permits in a neighborhood
?$where=neighborhoods_analysis_boundaries='Mission' AND filed_date > '2025-01-01'
&$order=filed_date DESC&$limit=50

# Permits by status in a district
?$select=status, count(*) as cnt&$where=supervisor_district='6'&$group=status

# High-value permits
?$where=estimated_cost > 1000000&$order=estimated_cost DESC&$limit=20

4. Architecture

Frontend (assistant-ui / React)
  │  HTTP / WebSocket
  ▼
Backend (FastAPI + Railtracks)
  ├── Railtracks Flow: "query"
  │     1. PermitPulse Agent (agent_node) — routes intent, calls tools
  │     2. fetch_permits (function_node) — SoQL → DataSF → ingest into Senso
  │     3. fetch_violations (function_node) — complaints + NOVs
  │     4. search_knowledge (function_node) — Senso semantic search
  │     5. fetch_nearby_parcels (function_node) — radius-based lookup
  │
  ├── Railtracks Flow: "ingest" (background)
  │     - Startup + periodic: fetch last 7 days of permits & violations
  │     - Normalize → batch ingest into Senso
  │
  └── External APIs
        ├── DataSF Socrata  (data.sfgov.org)
        ├── Senso Context OS (sdk.senso.ai)
        └── Google Gemini 3.1 Flash Lite Preview

Self-Improvement Loop

  1. User asks a question about an area.
  2. Agent fetches fresh data from DataSF for that area.
  3. New records get ingested into Senso → knowledge base grows.
  4. Future queries about the same area return richer, faster results.
  5. This is the "continuously learns" differentiator.

5. Repository Layout

Update this section whenever files or directories are added/moved.

MultiModalAgentsHackathon/
├── README.md                          # Project overview
├── .claude/skills/                    # Claude Code skills
│   ├── permit-pulse/SKILL.md          # ← YOU ARE HERE (project memory)
│   ├── railtracks/                    # Railtracks skill (shipables)
│   ├── senso-search/                  # Senso search skill (shipables)
│   ├── senso-ingest/                  # Senso ingest skill (shipables)
│   ├── assistant-ui/                  # assistant-ui skill (shipables)
│   └── skill-creator/                 # Skill authoring guide
├── .cursor/skills/                    # Cursor agent skills (mirrors .claude)
├── .agents/skills/                    # Codex / Copilot / Gemini skills
├── .github/                           # GitHub config
├── .vscode/                           # VS Code settings
├── .do/
│   └── app.yaml                       # DigitalOcean App Platform deployment spec
├── frontend/                          # Next.js 16 frontend
│   ├── src/app/page.tsx               # Main page — branding + chat
│   ├── src/app/layout.tsx             # Root layout with TooltipProvider
│   ├── src/app/api/chat/route.ts      # API route proxying to FastAPI backend
│   ├── src/components/Assistant.tsx    # assistant-ui chat component
│   ├── src/components/assistant-ui/   # Auto-generated assistant-ui primitives
│   ├── src/components/ui/             # shadcn UI components
│   ├── package.json                   # Next.js + AI SDK + assistant-ui deps
│   ├── tsconfig.json                  # TypeScript config
│   └── Dockerfile                     # Multi-stage Docker build (standalone)
└── backend/                           # Python backend
    ├── main.py                        # FastAPI app — routes, lifespan, CORS
    ├── agent.py                       # Railtracks agent + flow definition
    ├── config.py                      # Environment variables + constants
    ├── requirements.txt               # Python dependencies
    ├── .env.example                   # Template for env vars
    ├── Dockerfile                     # Multi-stage Python 3.11 build
    └── tools/                         # Tool implementations
        ├── __init__.py
        ├── datasf.py                  # DataSF Socrata API client
        └── senso.py                   # Senso CLI wrapper (ingest + search)

6. Environment Variables

VariablePurposeWhere
GOOGLE_API_KEYBackend fallback Gemini key for server-side requestsbackend .env / DO backend secret
SENSO_API_KEYSenso Context OS authbackend .env
SENSO_ORG_IDSenso organization IDbackend .env
DATASF_APP_TOKEN(optional) higher Socrata rate limitsbackend .env
BACKEND_URLPython backend URL for API proxyfrontend (set by DO via ${backend.PRIVATE_URL})

Frontend runtime key path: the user can paste a Gemini API key into the UI, it is stored in browser localStorage, sent with each chat request, and used by the backend as a per-request override.


7. Feature Status

Mark features as they are implemented. This is the canonical tracker.

#FeatureStatusNotes
1Project scaffolding + sponsor skills installed✅ DoneRailtracks, Senso, assistant-ui
2DataSF fetcher tools (permits, violations, contacts)✅ Donebackend/tools/datasf.py
3Senso ingestion pipeline✅ Donebackend/tools/senso.py (ingest_permits, ingest_violations)
4Senso search integration✅ Donebackend/tools/senso.py (search_knowledge, search_full)
5Railtracks agent flow (query)✅ Donebackend/agent.py — 4 tool nodes + agent + flow
6Railtracks background ingest flow✅ DoneSeed ingest on startup in main.py lifespan + /api/ingest
7FastAPI backend API✅ Donebackend/main.py — /api/chat, /api/health, /api/ingest
8assistant-ui frontend✅ DoneNext.js 16 + assistant-ui + AI SDK v5
9DigitalOcean deployment✅ DoneDockerfiles + .do/app.yaml app spec
10Demo video + Devpost submission🔲 Not started

8. Key Decisions & Gotchas

  • No maps or graph visualizations — chat-only UI per spec.
  • Fallbacks: If Senso is down → in-memory keyword search. If DataSF is slow → pre-fetched seed dataset cached in Senso.
  • Railtracks pattern: Tools are @rt.function_node with type hints + docstrings. Agents are rt.agent_node(...). Flows are rt.Flow(...).
  • Senso pattern: Ingest via CLI senso kb create-raw --data '<json>', search via senso search context "<query>". Both use --output json --quiet. See senso-ingest and senso-search skills for details.
  • Senso runtime: The backend tries a global senso binary first and falls back to npx @senso-ai/cli in local dev. The backend Docker image installs @senso-ai/cli so per-query ingestion works in deployment too.
  • AI SDK v5 breaking changes: toTextStreamResponse() not toDataStreamResponse(). useChatRuntime uses transport: new TextStreamChatTransport({ api }) not { api } directly.
  • assistant-ui auto-generated components have render= prop patterns that may not type-check with latest radix/shadcn. Use @ts-nocheck on those files.
  • assistant-ui pattern: Scaffold with npx assistant-ui create, connect to FastAPI backend via AI SDK route handler.
  • Frontend proxy pattern: frontend/src/app/api/chat/route.ts forwards the latest user message to FastAPI and streams plain text back. The frontend does not need its own Gemini call just to echo backend output.
  • Secret hygiene: backend/.env.example must contain placeholders only. Real keys belong in ignored local env files or deployment secrets, never in git.

9. Commands Cheat Sheet

bash
1# Install sponsor skills 2npx @senso-ai/shipables install CoronRing/railtracks --all 3npx @senso-ai/shipables install senso-ai/senso-search --all 4npx @senso-ai/shipables install senso-ai/senso-ingest --all 5npx @senso-ai/shipables install assistant-ui/assistant-ui --all 6 7# List installed skills 8npx @senso-ai/shipables list 9 10# (future) Run backend 11cd backend && uvicorn main:app --reload 12 13# (future) Run frontend 14cd frontend && npm run dev 15 16# Deploy to DigitalOcean 17doctl apps create --spec .do/app.yaml 18 19# Build Docker images locally 20cd backend && docker build -t permitpulse-backend . 21cd frontend && docker build -t permitpulse-frontend .

10. How to Update This Skill

When you add or change a feature:

  1. Update Section 5 (Repo Layout) if new files/dirs were created.
  2. Update Section 7 (Feature Status) — mark the feature ✅ or 🔄.
  3. Update Section 8 (Decisions & Gotchas) if you learned something new.
  4. Bump the version in the YAML frontmatter if it's a significant change.

相关技能

寻找 permit-pulse 的替代方案 (Alternative) 或可搭配使用的同类 community Skill?探索以下相关开源技能。

查看全部

openclaw-release-maintainer

Logo of openclaw
openclaw

Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

333.8k
0
AI

widget-generator

Logo of f
f

为prompts.chat的信息反馈系统生成可定制的插件小部件

149.6k
0
AI

flags

Logo of vercel
vercel

React 框架

138.4k
0
浏览器

pr-review

Logo of pytorch
pytorch

Python中具有强大GPU加速的张量和动态神经网络

98.6k
0
开发者工具