Skip to content

Rename and rewrite all skills; fix 13D scan - #8

Open
eggmasonvalue wants to merge 2 commits into
mainfrom
refactor/skill-rewrite
Open

eggmasonvalue wants to merge 2 commits into
mainfrom
refactor/skill-rewrite

Conversation

@eggmasonvalue

Copy link
Copy Markdown
Owner

What this changes

Renames. signal-sweep → idea-generation, sec-edgar-skill → sec-filings, market-scout → market-data, bottom-up-analyst → due-diligence. pitch-like-lou keeps its name. The cache signal-sweep-cache → idea-cache (env IDEA_CACHE_DIR). References are updated in package.json, bootstrap.mjs, the insider-scan workflow, pyproject, .gitignore, markdownlint config, AGENTS.md, context/, and the READMEs. In the skill lockfiles only the project-name line changed (edited by hand to avoid a uv format bump).

Where documentation lives (second commit; the first wrongly put gotchas in SKILL.md):

  • SKILL.md: routes, commands, and pointers only.
  • --help: flag semantics (filing-date selectors, 10-Q Part naming, 20-F items, ex-99.1).
  • Error hints: recoverable mistakes (BRK.B → BRK-B).
  • Report text: caveats (screen lag warning, transcript vendor note).
  • references/: off-script detail. New files: sec-filings/references/{edgartools,ownership}.md, market-data/references/yfinance.md, idea-generation/references/hunting.md.
  • A new CONVENTIONS.md rule records this.

due-diligence rewrite. Textbook material is cut. Six archetype files are merged into archetypes.md (edge, traps, valuation route, tell). The guides became normalization.md, valuation.md, and memo.md. guide_competitive.md is folded into SKILL.md. Ownership interpretation now lives only in sec-filings/references/ownership.md. Scope is unchanged: long-only, and banks, insurers, REITs, funds, and binary assets stay excluded.

pitch-like-lou. Tightened. The description now also triggers on a "stock pitch" or a "punchier rewrite".

Script fixes

  • scan_insiders.py: the 13D scan returned nothing because EDGAR now uses SCHEDULE 13D/13D/A; querying SC 13D on 2026-09-15 returned 0 rows. The scan now queries both names, dedupes by accession (the index lists each schedule under both filer and subject), and takes the issuer from issuer_info (the old code could attribute a stake to the filer, e.g. FTK → ProFrac). Live test on 2026-09-15: 17 schedules.
  • fetch_market_data.py: shows class shares and implied all-class shares separately when they differ. Prints a hyphen hint for dotted tickers.
  • fetch_transcripts.py: adds the hyphen hint and a vendor-transcript note in each file.
  • scan_market.py: reports for screens using lastclose52week* fields now carry a lag warning.
  • fetch_filing.py, parse_financials.py, fetch_filings.py: --help text only.
  • Removed list_headings.py (it was rg -n '^#').
  • context/DECISIONS.md: the z-score entry now says 22 trading days vs the prior 252 rolling returns, not "30-day".

Known open issues (not fixed here)

  • Yahoo's lastclose52weeklow/high.lasttwelvemonths screener fields lag the live quote. On 2026-10-31, a ≤ 1.0 query returned stocks 6–50% above their low. So near-52wk-low and fallen-from-grace give misleading results until they are redesigned. This PR only adds a warning.
  • dcf.py and epv.py need Python 3.10+ (they crash on 3.9 outside the secpi venv).
  • fetch_transcripts.py --latest trusts Yahoo's listing order. The Q&A split depends on an operator turn containing "question".
  • scan_insiders.py clusters fall back to name matching when an owner CIK is missing.

Verification

  • ruff check, ruff format --check, and markdownlint-cli2 pass.
  • Live checks: SEC daily index (13D form names), edgartools company filings for both 13D spellings, yfinance 1.5.2 fields (units, BRK-B shares, ^TNX), screener lag, the BRK.B hint, and the screen-report warning.
  • Not run end-to-end: fetch_filing.py/parse_financials.py after the --help edits (only --help was exercised), transcripts, theme search, and the conference scan.
  • Luna (gpt-6-luna) eval, routing and dry-run plans only, no live calls. Old vs new descriptions on 20 prompts:
    • five prompts (EV/EBIT, 10y Treasury, options, consensus EPS, spin-offs) went from unrouted to routed;
    • the routing test revealed overlaps that were fixed (13F holders listed in both data skills);
    • dry-run plans caught doc/code mismatches that were fixed.
      These checks used the first-commit docs, before SKILL.md was slimmed, and were not re-run.

…gotchas

- Rename signal-sweep -> idea-generation, sec-edgar-skill -> sec-filings,
  market-scout -> market-data, bottom-up-analyst -> due-diligence;
  signal-sweep-cache -> idea-cache (IDEA_CACHE_DIR)
- Data skills: job -> command plus hard-won gotchas from the scripts and
  live checks (filing-date selectors, 10-Q Part namespacing, 13D form
  rename, yfinance unit and share-class quirks, lagging screener fields)
- due-diligence: drop textbook material; archetypes in one file;
  ownership semantics single-sourced in sec-filings
- Fix scan_insiders 13D scan: SEC renamed forms to SCHEDULE 13D (old
  names returned nothing); dedupe by accession; issuer from schedule
- fetch_market_data: distinguish class shares from implied shares
- Remove list_headings.py (rg -n '^#')
SKILL.md now holds routes, commands, and pointers only. Flag semantics
moved to --help, recoverable mistakes to error hints, report caveats stay
in report text, and off-script quirks to references (yfinance.md,
hunting.md, edgartools.md, ownership.md).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant