SignalForce
AGENTS.md9 starsChanged 3 months agoMITView on GitHub
SignalForce is an open-source collection of Codex agent skills and n8n workflows for signal-based outbound sales. Configure it for any ICP by editing config/config.yaml and config/gtm-context.md. Three-layer architecture: - Skills (skills/*/SKILL.md) — Codex instruction files. The primary user interface. Each skill tells Codex how to perform a GTM task. - Scripts (scripts/*.py) — Python modules that hit external APIs (GitHub, Semantic Scholar, HF Hub, etc.). Skills invoke these as tools. - n8n Workflows (n8n-workflows/*.json) — Scheduled automation that runs autonomously…
- Reads credentials
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository15 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- champion-trackerSkill
- compliance-managerSkill
- contact-finderSkill
- deliverability-managerSkill
- email-writerSkill
- linkedin-contentSkill
- meeting-followupSkill
- multi-channel-writerSkill
- pipeline-trackerSkill
- prospect-researcherSkill
- resource-offerSkill
- setupSkill
- signal-scannerSkill
- validateSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
24 rules. About 0 are common, 15 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 34
Immutability: All Pydantic models use frozen=True.
- Very specific: line 35
Every script must be importable as a module AND runnable as CLI (if __name__ == "__main__").
- Distinctive: line 38
All API calls must handle rate limits (429/403), timeouts, and auth failures.
- Distinctive: line 40
Never silently swallow errors.
- Very specific: line 44
All API keys loaded via python-dotenv from .env.
- Very specific: line 50
Follow superpowers:writing-skills format.
- Distinctive: line 55
TDD required: Write tests first (RED), implement (GREEN), refactor (IMPROVE).
- Very specific: line 58
Test fixtures live in tests/fixtures/.
- Distinctive: line 116
If something goes sideways, STOP and re-plan immediately -- don't keep pushing
- Distinctive: line 117
Use plan mode for verification steps, not just building
- Distinctive: line 118
Write detailed specs upfront to reduce ambiguity
- Distinctive: line 121
Use subagents liberally to keep main context window clean
- Very specific: line 127
After ANY correction from the user: update tasks/lessons.md with the pattern
- Distinctive: line 128
Write rules for yourself that prevent the same mistake
- Distinctive: line 133
Never mark a task complete without proving it works
- Distinctive: line 135
Ask yourself: "Would a staff engineer approve this?"
- Distinctive: line 136
Run tests, check logs, demonstrate correctness
- Distinctive: line 140
If a fix feels hacky: "Knowing everything I know now, implement the elegant solution"
- Distinctive: line 145
When given a bug report: just fix it.
- Very specific: line 152
Plan First: Write plan to tasks/todo.md with checkable items
- Distinctive: line 153
Verify Plan: Check in before starting implementation
- Very specific: line 156
Document Results: Add review section to tasks/todo.md
- Very specific: line 157
Capture Lessons: Update tasks/lessons.md after corrections
- Distinctive: line 167
When the user's request matches an available skill, invoke it via the Skill tool.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
SignalForce
Project Overview
SignalForce is an open-source collection of Codex agent skills and n8n workflows for signal-based outbound sales. Configure it for any ICP by editing config/config.yaml and config/gtm-context.md.
Three-layer architecture:
- Skills (
skills/*/SKILL.md) — Codex instruction files. The primary user interface. Each skill tells Codex how to perform a GTM task. - Scripts (
scripts/*.py) — Python modules that hit external APIs (GitHub, Semantic Scholar, HF Hub, etc.). Skills invoke these as tools. - n8n Workflows (
n8n-workflows/*.json) — Scheduled automation that runs autonomously (daily signal scans, enrichment pipelines, CRM sync).
Directory Structure
config/ — Your active ICP config (gitignored; copy from examples/ or run /setup)
config.example/ — Annotated reference config (committed; documents all config options)
examples/ — Pre-built ICP configs for four verticals (rl-infrastructure, cybersecurity, data-infra, devtools)
skills/ — Codex SKILL.md files (13 skills)
scripts/ — Python modules for API interactions and data processing
scripts/scanners/ — Per-source scanner modules (github_scanner, arxiv_scanner, etc.)
n8n-workflows/ — JSON workflow definitions for n8n automation
templates/ — Reusable email sequences and scoring rubrics
docs/ — Architecture, setup guide, cost analysis, results framework
tests/ — pytest test suite (unit + integration)
tasks/ — Current work tracking (todo.md, lessons.md)Conventions
Python
- Pydantic models for all data structures (
scripts/models.py). Never use raw dicts for structured data. - Type hints required on all function signatures.
- Ruff for formatting and linting (line-length 100, target Python 3.11).
- Immutability: All Pydantic models use
frozen=True. Never mutate data — return new objects. - Every script must be importable as a module AND runnable as CLI (
if __name__ == "__main__").
Error Handling
- All API calls must handle rate limits (429/403), timeouts, and auth failures.
- Log errors with full context (URL, status code, response body).
- Never silently swallow errors.
- Fail fast: validate API keys at scan start, not mid-scan.
Environment Variables
- All API keys loaded via
python-dotenvfrom.env. Never hardcode secrets. .env.exampledocuments all variables (no real values).scripts/config.pycentralizes API key loading and validation (env vars only).scripts/config_loader.pyloads the ICP config fromconfig/config.yaml(separate from env vars).
Skills
- Follow
superpowers:writing-skillsformat. YAML frontmatter withnameanddescriptiononly. - Description starts with "Use when..." and never summarizes the workflow.
- Under 500 words. Token-efficient.
Testing
- TDD required: Write tests first (RED), implement (GREEN), refactor (IMPROVE).
- pytest with 80% minimum coverage.
- Mock all HTTP calls in tests — never hit real APIs.
- Test fixtures live in
tests/fixtures/.
Commands
# Run tests
pytest --cov=scripts --cov-report=term-missing -v
# Format
ruff format .
# Lint
ruff check . --fix
# Run all configured scanners via runner
python -m scripts.scanner_runner --lookback-days 7 --output /tmp/signals/
# Run a specific scanner directly
python -m scripts.scanners.github_scanner --lookback-days 7 --output /tmp/github.json
# Run signal stacker
python -m scripts.signal_stacker --inputs scan1.json scan2.json --output stacked.jsonKey Files
config/gtm-context.md— Your active ICP definitions, product positioning, voice/tone rules. Loaded by all skills. (gitignored; copy fromconfig.example/orexamples/)config/config.yaml— Scanner keywords, ICP tier definitions, scoring thresholds. (gitignored)config.example/— Annotated reference showing all available config options.scripts/models.py— Pydantic data models (Signal, CompanyProfile, Contact, Deal, etc.)scripts/config.py— API key env var loading and validationscripts/config_loader.py— ICP config loading fromconfig/config.yamlscripts/scanner_runner.py— Discovers and runs all configured scannersscripts/api_client.py— Base API client with retry/rate-limit handlingtemplates/scoring-rubrics/icp-scoring-model.md— Weighted ICP scoring criteria
External APIs
| API | Purpose | Key Required |
| GitHub API | Repo detection (keywords from config.yaml) | Yes (GITHUB_TOKEN) |
| Semantic Scholar | ArXiv paper author affiliation mapping | Optional (rate limited without) |
| Hugging Face Hub | Model upload detection | No (public API) |
| Apollo.io | Contact enrichment | Yes |
| Hunter.io | Email pattern lookup | Yes |
| Prospeo | LinkedIn email enrichment | Yes |
| Instantly.ai | Cold email sequencing | Yes |
| HubSpot | CRM pipeline | Yes |
| ZeroBounce | Email validation | Yes |
Bookkeeping
Workflow Orchestration
1. Plan Mode Default
- Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)
- If something goes sideways, STOP and re-plan immediately -- don't keep pushing
- Use plan mode for verification steps, not just building
- Write detailed specs upfront to reduce ambiguity
2. Subagent Strategy
- Use subagents liberally to keep main context window clean
- Offload research, exploration, and parallel analysis to subagents
- For complex problems, throw more compute at it via subagents
- One task per subagent for focused execution
3. Self-Improvement Loop
- After ANY correction from the user: update
tasks/lessons.mdwith the pattern - Write rules for yourself that prevent the same mistake
- Ruthlessly iterate on these lessons until mistake rate drops
- Review lessons at session start for relevant project
4. Verification Before Done
- Never mark a task complete without proving it works
- Diff behavior between main and your changes when relevant
- Ask yourself: "Would a staff engineer approve this?"
- Run tests, check logs, demonstrate correctness
5. Demand Elegance (Balanced)
- For non-trivial changes: pause and ask "is there a more elegant way?"
- If a fix feels hacky: "Knowing everything I know now, implement the elegant solution"
- Skip this for simple, obvious fixes -- don't over-engineer
- Challenge your own work before presenting it
6. Autonomous Bug Fixing
- When given a bug report: just fix it. Don't ask for hand-holding
- Point at logs, errors, failing tests -- then resolve them
- Zero context switching required from the user
- Go fix failing CI tests without being told how
Task Management
- Plan First: Write plan to
tasks/todo.mdwith checkable items - Verify Plan: Check in before starting implementation
- Track Progress: Mark items complete as you go
- Explain Changes: High-level summary at each step
- Document Results: Add review section to
tasks/todo.md - Capture Lessons: Update
tasks/lessons.mdafter corrections
Core Principles
- Simplicity First: Make every change as simple as possible. Impact minimal code.
- No Laziness: Find root causes. No temporary fixes. Senior developer standards.
- Minimal Impact: Changes should only touch what's necessary. Avoid introducing bugs.
Skill routing
When the user's request matches an available skill, invoke it via the Skill tool. When in doubt, invoke the skill.
Key routing rules:
- Product ideas/brainstorming → invoke /office-hours
- Strategy/scope → invoke /plan-ceo-review
- Architecture → invoke /plan-eng-review
- Design system/plan review → invoke /design-consultation or /plan-design-review
- Full review pipeline → invoke /autoplan
- Bugs/errors → invoke /investigate
- QA/testing site behavior → invoke /qa or /qa-only
- Code review/diff check → invoke /review
- Visual polish → invoke /design-review
- Ship/deploy/PR → invoke /ship or /land-and-deploy
- Save progress → invoke /context-save
- Resume context → invoke /context-restore
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

