# 028 Agents 59c40ecb

> Agent Skill: fecfile

- Skill: `tools-only/028-agents-59c40ecb` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/028-agents-59c40ecb`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/028-agents-59c40ecb/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tools-only/028-agents-59c40ecb

---

# Agent Skill: fecfile

This repo contains an Agent Skill for analyzing FEC (Federal Election Commission) campaign finance filings.

## Key Details

- **Skill name**: `fecfile`
- **Dependencies**: `fecfile` - managed via inline script metadata (PEP 723), auto-installed by `uv run`
- **Data source**: FEC API at `docquery.fec.gov`
- **Python**: Requires 3.9+

## Project Structure

- `skills/fecfile/` - The skill itself
  - `SKILL.md` - Main skill entrypoint and usage guide
  - `references/FORMS.md` - Reference for FEC form types (F1, F2, F3, F99)
  - `references/SCHEDULES.md` - Field mappings for Schedules A, B, C, D, E
  - `scripts/fetch_filing.py` - Fetches FEC filing data via the fecfile library
- `README.md` - Installation and usage for end users

## Development Commands

- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID>`: Fetch a full filing as JSON.
- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID> --summary-only`: Summary only, no itemizations.
- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID> --schedule A`: Limit to a single schedule.
- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID> --stream`: JSONL streaming for large filings.

## Coding Style & Naming Conventions

- Python uses 4-space indentation and standard library `argparse` conventions.
- Keep functions small and descriptive (e.g., `build_options`, `stream_filing`).
- Prefer straightforward, readable logic over clever abstractions.
- No formatter is enforced; keep code PEP 8–friendly and consistent with `fetch_filing.py`.

## Testing Guidelines

- There is no automated test suite in this repository.
- Validate changes manually by running the script with a known filing ID.
- For large filings, verify `--summary-only` or `--stream` behavior to avoid memory issues.

## Releases

Releases use semver tags (e.g., `1.0.0`) plus a `latest` tag that always points to the most recent stable release.

### Release Process

1. Update the version in `skills/fecfile/SKILL.md` frontmatter:
   ```yaml
   metadata:
     author: Matt Hodges
     version: "1.1.0"
   ```
2. Update `CHANGELOG.md`:
   - Add a new section at the top (below the header) for the new version
   - Use the format `## [X.Y.Z] - YYYY-MM-DD`
   - Document changes under `### Added`, `### Changed`, `### Fixed`, or `### Removed` as appropriate
   - Add a comparison link at the bottom: `[X.Y.Z]: https://github.com/hodgesmr/agent-fecfile/compare/PREV...X.Y.Z`
3. Commit the version bump and changelog update
4. Run the release script:
   ```bash
   ./release.sh
   ```

The script extracts the version from SKILL.md, creates the version tag, updates the `latest` tag, and pushes both.

## Acknowledgments

- Built on the [fecfile](https://github.com/esonderegger/fecfile) library by Evan Sonderegger
- Inspired by [llm-fecfile](https://github.com/dwillis/llm-fecfile) by Derek Willis

