snapgen-marketing-tracker — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited snapgen-marketing-tracker (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
A bulleted imperative like {match} tells the agent to never reveal, disclose, or mention something to the user. Used adversarially it can instruct the agent to hide its tool calls or lie about what it did — stripping the transparency a user relies on to trust the agent.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Builds a complete 90-day marketing tracker as an Excel file (.xlsx) with:
The tweets are fully written, ready-to-publish text customized to the user's product — not placeholders. This is the key value: the skill pre-generates content so the user only has to review, edit, and post.
Trigger this skill when the user asks any of:
This is a multi-step process. Do NOT skip straight to running scripts. Quality of output depends entirely on how well you understand the user's product first.
Read references/interview_questions.md and ask the user the essential questions (marked REQUIRED). For optional ones, use judgment — ask if the answer isn't obvious from context. Use the AskUserQuestion tool in batches (group related questions into one tool call with multiple questions).
Collect at minimum:
Before writing any content, read all four reference files:
references/pillars.md — 9 content pillars, voice rules, and sample tweets per pillarreferences/writing_guide.md — how to write good tweets for each pillar, length rules, hooks, what to avoidreferences/structure.md — Excel structure, sheet-by-sheet layout, formula architecturereferences/interview_questions.md — the full question listThese encode hard-won patterns. Don't skim — read them fully.
Open assets/example-screenify-tracker.xlsx (use the Read tool with openpyxl via a short Python snippet, or describe its structure from references/structure.md). This is the working output for Screenify Studio. Study the tone, length, and specificity of tweets there — your output should match that quality bar, but customized to the user's product.
The scripts/ folder contains 6 Python scripts (01_scaffold.py through 06_bonus_pool.py) that were originally written for Screenify Studio. They produce the example file in assets/.
Your job: copy each script to a working directory, then rewrite the content inside each script to reflect the user's product. The scaffolding code (workbook creation, formatting, formulas, validations) should stay untouched. Only change the string content.
Specifically, you need to rewrite these content sections:
| Script | Content to rewrite |
|---|---|
01_scaffold.py | Week 1 tweets (TWEETS dict), founder bio placeholders, pricing references, headers, example rows in Tweet Templates / Asset Library / Outreach CRM |
02_fill_weeks.py | Weeks 2-12 tweets (WEEK_TWEETS dict — 165 tweets total) |
03_accounts_narrative.py | Opening narrative tweets (Week 1 Monday T1, T2), Personal/@Brand account mapping, Account Strategy section |
04_media.py | Media Queue descriptions (30 rows) — must match the actual tweet content for cross-references to work |
05_qa_check.py | Usually no content changes needed — keep formulas as-is |
06_bonus_pool.py | 45 bonus tweets (bonus_tweets list — 15 per pillar) |
07_readme_weekends.py | 4 customization vars at top: PRODUCT_NAME, START_DATE_STR, END_DATE_STR, WEEK_COUNT, NORTH_STAR |
08_reply_opportunities.py | Top-of-file vars: PRODUCT_NAME, PRODUCT_URL, ONE_LINER, PRICING, FEATURES[], COMPETITORS[], PLACEHOLDER{}. Rewrite the 73 reply templates (12 categories: WIB, PITCH, SHIP, MRR, PROB, LINK, RT, GM, FB, SEARCH, WIN, STACK) to reference user's product specifics. Replace the 30 target accounts + 35 search keywords with ones relevant to user's niche. |
Content customization rules:
DO NOT change:
After adapting all scripts, run them sequentially. Each one modifies the Excel file from the previous step:
cd /sessions/gracious-jolly-dijkstra # or wherever you're working
python3 scripts/01_scaffold.py # creates workbook + Week 1
python3 scripts/02_fill_weeks.py # fills Weeks 2-12
python3 scripts/03_accounts_narrative.py # adds Posted As columns + narrative fix
python3 scripts/04_media.py # adds media tracking + Media Queue sheet
python3 scripts/05_qa_check.py # adds QA Check sheet
python3 scripts/06_bonus_pool.py # adds 3 new pillars + Bonus Content Pool
python3 scripts/07_readme_weekends.py <output.xlsx> # rewrites README + fills 50 weekend slots
python3 scripts/08_reply_opportunities.py <output.xlsx> # adds Reply Templates + Targets + LogStep 8 adds reply-opportunity system — 3 new sheets that handle the "reactive" side of Twitter/X growth (replying to other people's opportunity threads, not just posting your own content):
Step 7 is critical — it patches two gaps left by scripts 01-06:
[(CQ,TC), (II,CQ), (TC,II)] × 2 slots/dayBefore running, edit the 4 customization vars at the top of 07_readme_weekends.py:
PRODUCT_NAME — all caps, e.g. "SCREENIFY STUDIO"START_DATE_STR — e.g. "2026-04-06 (Monday)"END_DATE_STR — e.g. "2026-07-05 (Sunday)"WEEK_COUNT — default 13NORTH_STAR — one-line goal, e.g. "First 50 paying users ($500-1500 MRR) by Day 90"Check for errors after each step. Most common issue: merged-cell errors when inserting columns (see how 03_accounts_narrative.py handles unmerge_cells before insert_cols).
After all 7 scripts run, verify the file is valid:
python3 scripts/recalc.py <path-to-output.xlsx> → should report "total_errors": 0 and roughly 211 formulas. (recalc.py is bundled in this skill's scripts/ folder — no external dependencies needed.)P0 media tasks still TODO and P1 media tasks still TODO (these are warnings by design, not failures).Save the final file to the user's Cowork workspace folder and share with a computer:// link. Give a brief summary of:
These ratios are hard-coded in the scripts. Do not rebalance without user confirmation — they represent validated content mix for an indie SaaS build-in-public launch:
| Pillar | % of main 180 | Purpose |
|---|---|---|
| Build-in-Public | 25-30% | Narrative thread, daily progress, vulnerability |
| Feature Showcase | 15-20% | Product capability demos (requires Video/GIF) |
| Tutorial | 10-15% | Workflow/how-to (requires Video/GIF) |
| Behind-the-Scenes | 10% | Process, decisions, mistakes |
| Customer Stories | 10% | Social proof, user quotes |
| Competitor Comparison | 5% | Positioning (Personal account ONLY) |
Bonus pool (3 additional pillars × 15 tweets = 45 evergreen):
| Pillar | Purpose | Account |
|---|---|---|
| Community Question | Ask audience, prompt replies | Personal only |
| Tips & Craft | Craft tips adjacent to product domain | Either |
| Indirect Insight | Thought leadership, opinions | Personal only |
Hard rule (enforced by QA Check):
Common issues and fixes:
KeyError: (row, col) on insert_cols → unmerge merged cells BEFORE inserting (see 03_accounts_narrative.py for pattern)unhashable type: 'StyleProxy' → don't do conditional font assignment in one line; use if/else blocksrecalc.py script from the xlsx skillinsert_rows → openpyxl does NOT update formula references automatically; any formula referencing a shifted row must be manually updatedSave the final .xlsx to the user's Cowork workspace folder (typically /sessions/<session-id>/mnt/<Folder Name>/). Name the file <ProductName>-90-Day-Tracker.xlsx.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.