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
- Update the version in
skills/fecfile/SKILL.md frontmatter:metadata:
author: Matt Hodges
version: "1.1.0"
- 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
- Commit the version bump and changelog update
- Run the release script:
./release.sh
The script extracts the version from SKILL.md, creates the version tag, updates the latest tag, and pushes both.
Acknowledgments
1---2name: 028-agents-59c40ecb3description: Agent Skill: fecfile4---5# Agent Skill: fecfile67This repo contains an Agent Skill for analyzing FEC (Federal Election Commission) campaign finance filings.89## Key Details1011- **Skill name**: `fecfile`12- **Dependencies**: `fecfile` - managed via inline script metadata (PEP 723), auto-installed by `uv run`13- **Data source**: FEC API at `docquery.fec.gov`14- **Python**: Requires 3.9+1516## Project Structure1718- `skills/fecfile/` - The skill itself19 - `SKILL.md` - Main skill entrypoint and usage guide20 - `references/FORMS.md` - Reference for FEC form types (F1, F2, F3, F99)21 - `references/SCHEDULES.md` - Field mappings for Schedules A, B, C, D, E22 - `scripts/fetch_filing.py` - Fetches FEC filing data via the fecfile library23- `README.md` - Installation and usage for end users2425## Development Commands2627- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID>`: Fetch a full filing as JSON.28- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID> --summary-only`: Summary only, no itemizations.29- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID> --schedule A`: Limit to a single schedule.30- `uv run skills/fecfile/scripts/fetch_filing.py <FILING_ID> --stream`: JSONL streaming for large filings.3132## Coding Style & Naming Conventions3334- Python uses 4-space indentation and standard library `argparse` conventions.35- Keep functions small and descriptive (e.g., `build_options`, `stream_filing`).36- Prefer straightforward, readable logic over clever abstractions.37- No formatter is enforced; keep code PEP 8–friendly and consistent with `fetch_filing.py`.3839## Testing Guidelines4041- There is no automated test suite in this repository.42- Validate changes manually by running the script with a known filing ID.43- For large filings, verify `--summary-only` or `--stream` behavior to avoid memory issues.4445## Releases4647Releases use semver tags (e.g., `1.0.0`) plus a `latest` tag that always points to the most recent stable release.4849### Release Process50511. Update the version in `skills/fecfile/SKILL.md` frontmatter:52 ```yaml53 metadata:54 author: Matt Hodges55 version: "1.1.0"56 ```572. Update `CHANGELOG.md`:58 - Add a new section at the top (below the header) for the new version59 - Use the format `## [X.Y.Z] - YYYY-MM-DD`60 - Document changes under `### Added`, `### Changed`, `### Fixed`, or `### Removed` as appropriate61 - Add a comparison link at the bottom: `[X.Y.Z]: https://github.com/hodgesmr/agent-fecfile/compare/PREV...X.Y.Z`623. Commit the version bump and changelog update634. Run the release script:64 ```bash65 ./release.sh66 ```6768The script extracts the version from SKILL.md, creates the version tag, updates the `latest` tag, and pushes both.6970## Acknowledgments7172- Built on the [fecfile](https://github.com/esonderegger/fecfile) library by Evan Sonderegger73- Inspired by [llm-fecfile](https://github.com/dwillis/llm-fecfile) by Derek Willis