ApertureOscillation
3-pass scope oscillation that holds a question constant while shifting zoom — narrow/tactical, wide/strategic, then synthesis — to surface design tensions,…
Generic civic intelligence aggregator for any US city — daily local digest of construction permits, crime, new businesses, public officials, legislation, elections, arrests, and local news, keyed off principal's Hometown. Writes JSON consumed by Pulse LOCAL tab. Crime delegates
$ npx -y skills add danielmiessler/personal_ai_infrastructure --skill LocalIntelligence --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/LocalIntelligenceContext preview
The summary Claude sees to decide when to auto-load this skill.
Generic civic intelligence aggregator for any US city — daily local digest of construction permits, crime, new businesses, public officials, legislation, elections, arrests, and local news, keyed off principal's Hometown. Writes JSON consumed by Pulse LOCAL tab. Crime delegates
name: LocalIntelligence version: 1.0.9 description: "Generic civic intelligence aggregator for any US city — daily local digest of construction permits, crime, new businesses, public officials, legislation, elections, arrests, and local news, keyed off principal's Hometown. Writes JSON consumed by Pulse LOCAL tab. Crime delegates to a dedicated crime-stats skill. Workflows: DailyBrief, Construction, Crime, Business, Officials, Legislation, Elections, Arrests, News. USE WHEN local news, hometown news, council meeting, building permits, mayor, ballot measures, ordinance, recent arrests, civic intel, local digest. NOT FOR national news or arbitrary-city crime."
**Before executing, check for user customizations at:** `~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/LocalIntelligence/`
If this directory exists, load and apply any `PREFERENCES.md`, optional source-list overrides, or per-source API keys (e.g., OpenStates, Google News topic ID). These override defaults. If the directory does not exist, proceed with skill defaults — universal sources only.
**`sources.json`** in the same directory is the deterministic per-city source list (RSS feeds, local JSON APIs) consumed by `Tools/UserSources.ts` on every refresh — see `Tools/UserSources.help.md` for the schema. City-specific URLs belong there, never in this skill.
**When executing a workflow, do BOTH:**
1. **Send voice notification**:
curl -s -X POST http://localhost:31337/notify \
-H "Content-Type: application/json" \
-d '{"message": "Running WORKFLOWNAME in LocalIntelligence"}' \
> /dev/null 2>&1 &2. **Output text notification**:
Running **WorkflowName** in **LocalIntelligence**...
LocalIntelligence is a civic intelligence aggregator for any US city. It pulls eight categories of local data — construction permits, crime, new businesses, public officials, legislation, elections, arrests, and local news — into a single daily JSON digest, keyed off the city in the principal's identity file and served to the Pulse LOCAL tab. Crime delegates to the dedicated crime-stats skill.
What's actually happening where you live is scattered across a dozen sites that nobody checks — the city's permit portal, the council agenda system, the sheriff's blotter, a local paper, the elections office. No single feed tells you a new ordinance is up for a vote, a building is going up down the street, or an election is coming. Most "local news" tools either cover one city, hardcode endpoints that break, or paywall the good stories. This skill stays generic across every US city, resolves the target city at runtime, and degrades gracefully when a source has no data instead of blanking the whole digest.
Local civic intelligence for whatever city the principal lists in `PRINCIPAL_IDENTITY.md` Hometown. Generic across all US cities — no per-city profiles, no hardcoded endpoints. Eight fetchers run in parallel and write one JSON digest, served to the Pulse `LOCAL` tab.
The principal's hometown is **never hardcoded in this skill**. Every workflow and tool resolves it at runtime via:
import { readHometown } from "./Tools/Hometown.ts"
const { city, state, zip, county } = await readHometown()`Tools/Hometown.ts` parses the `**Hometown:**` line from `~/.claude/LIFEOS/USER/PRINCIPAL/PRINCIPAL_IDENTITY.md`. If absent, every workflow surfaces a clear "no hometown set" message and refuses to fetch. There is no fallback city.
| Workflow | Trigger | File | |----------|---------|------| | **DailyBrief** | "daily local digest", "what's happening in my city", "refresh local intel" | `Workflows/DailyBrief.md` | | **Construction** | "new construction", "building permits", "what's being built" | `Workflows/Construction.md` | | **Crime** | "crime stats", "is my city safer", "crime trend" | `Workflows/Crime.md` | | **Business** | "new businesses", "business openings", "business closures" | `Workflows/Business.md` | | **Officials** | "city council", "mayor", "school board", "public officials" | `Workflows/Officials.md` | | **Legislation** | "pending laws", "council agenda", "ordinance vote", "new laws in effect" | `Workflows/Legislation.md` | | **Elections** | "upcoming election", "ballot measures", "who's running", "polling location" | `Workflows/Elections.md` | | **Arrests** | "recent arrests", "police blotter", "sheriff blotter" | `Workflows/Arrests.md` | | **News** | "local news", "hometown news", "headlines from my city" | `Workflows/News.md` |
LocalIntelligence/
├── SKILL.md this file
├── Workflows/
│ ├── DailyBrief.md orchestrator — runs Refresh.ts and summarizes
│ ├── Construction.md
│ ├── Crime.md fetches city crime stats via the configured crime-data adapter
│ ├── Business.md
│ ├── Officials.md
│ ├── Legislation.md
│ ├── Elections.md
│ ├── Arrests.md
│ └── News.md
├── Tools/
│ ├── Hometown.ts parser + types — sole source of city info
│ ├── Refresh.ts orchestrator — calls 8 fetchers, writes latest.json; --fill adds AI gap-fill
│ ├── ClaudeFill.ts AI gap-filler — one web-research claude subprocess for empty sections
│ ├── UserSources.ts user-configured RSS/JSON sources from CUSTOMIZATIONS sources.json
│ ├── FetchConstruction.ts
│ ├── FetchBusiness.ts
│ ├── FetchOfficials.ts
│ ├── FetchLegislation.ts
│ ├── FetchElections.ts
│ ├── FetchArrests.ts
│ ├── FetchNews.ts
│ └── FetchCrime.ts shells to a dedicated crime-stats skill's workflow output
└── References/
└── DataSources.md catalog of universal civic sources keyed off {city,state}Output: `~/.claude/LIFEOS/MEMORY/DATA/LocalIntelligence/<YYYY-MM-DD>_<city>_<state>_digest.json` (dated history — the Week/Month/Year views agg
⛰️ The Life Operating System — an intent engineering platform that moves you from your current state to your ideal state, in life and work.
Repo: danielmiessler/personal_ai_infrastructure
3-pass scope oscillation that holds a question constant while shifting zoom — narrow/tactical, wide/strategic, then synthesis — to surface design tensions,…
Curated aphorism collection with CRUD — content-based matching, themed search, thinker research, DB maintenance. Quotes organized by author/theme/context/usage…
Scrapes social platforms, business data, and e-commerce via Apify actors — Instagram, LinkedIn, TikTok, YouTube, Facebook, Google Maps, Amazon, and web crawls…
Search and retrieve arXiv academic papers by topic, category, or paper ID — with AlphaXiv-enriched AI-generated overviews. Uses arXiv Atom API across…
Static visual content across 20+ formats — diagrams, mermaid, infographics, D3 dashboards, comics, icons, wallpaper — via Nano Banana Pro (default), Nano…
AI audio editing pipeline: Whisper word-level transcription → Claude segment classification (KEEP/CUT_FILLER/CUT_FALSE_START/CUT_STUTTER/CUT_DEAD_AIR) → ffmpeg…