marketing-task-decomposition
Skill4 starsChanged 29 days agoMITView on GitHub
[METHODOLOGY] Decompose a marketing engagement plan into atomic task files (engagement/tasks/*.md). Each task = one specialist + one deliverable + measurable done-when. Enables targeted re-dispatch on iter-2 REJECT instead of re-running the whole phase.
In this repository48 other files it gives its agents.
- skills/dev-methodology/references/agents.mdAGENTS.md
- skills/skill-authoring/references/agents.mdAGENTS.md
- acceptance-protocolSkill
- agency-intakeSkill
- ai-visibility-methodologySkill
- banner-design-guideSkill
- benchmark-researchSkill
- brand-methodologySkill
- code-reviewingSkill
- code-writingSkill
- codex-bridgeSkill
- deploy-pipelineSkill
- design-assets-guideSkill
- design-system-methodologySkill
- design-task-decompositionSkill
- dev-methodologySkill
- docs-pipelineSkill
- documentation-writingSkill
- engagement-contractSkill
- engagement-protocolSkill
- feature-researchSkill
- human-voiceSkill
- infrastructure-setupSkill
- post-deploy-qaSkill
- pre-deploy-qaSkill
- presentation-designSkill
- project-planningSkill
- prompt-engineeringSkill
- security-auditingSkill
- semantic-drift-methodologySkill
- seo-auditingSkill
- skill-authoringSkill
- skill-test-designSkill
- skill-testingSkill
- system-optimization-protocolSkill
- task-decompositionSkill
- tech-spec-planningSkill
- testing-methodologySkill
- ui-styling-guideSkill
- ui-ux-methodologySkill
- user-spec-planningSkill
- validation-pipelineSkill
- yandex-analytics-methodologySkill
- yandex-direct-guideSkill
- yandex-metrika-guideSkill
- yandex-search-guideSkill
- yandex-webmaster-guideSkill
- yandex-wordstat-guideSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 2 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
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 29
If the plan skips decomposition on a size: L engagement, the handoff gate fails (handoff-precheck) on missing tasks/ — same gate as a …
- Distinctive: line 72
If you can't write a measurable acceptance bullet for the task, it's not atomic — split further.
- Very specific: line 126
Read criteria.md and plan.md.
- Very specific: line 132
Write one tasks/{NN}-{slug}.md per atom from the template above.
- Very specific: line 133
Write tasks/INDEX.md with the wave grouping if engagement is L (or if M with ≥5 tasks).
- Distinctive: line 147
If any check fails — fix the file, don't dispatch.
- Very specific: line 155
When done, specialist updates the task file's status: done and is finished.
- Very specific: line 169
Don't put the same crit-N in
crit_refsof >3 tasks: If one criterion needs that many tasks, the criterion is a deliverable list — sharpen … - Very specific: line 175
Not a tech-spec (no tech-spec.md for marketing).
- Very specific: line 176
Not a task-creator invocation (dev-only — has TDD anchors, code-touching).
- Very specific: line 177
Not validated by task-validator or reality-checker agents (those are dev-only).
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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
Marketing task decomposition
Marketing engagements without atomic task files force the entire phase to restart on REJECT. With atomic tasks, the lead re-dispatches only the broken unit. This skill defines the contract.
When to decompose
| size | Required? | Rationale |
| S | NO | One specialist, one deliverable — plan.md is enough. |
| M | RECOMMENDED if ≥2 specialists OR ≥3 distinct deliverables | iter-2 cost saving outweighs decomposition overhead. |
| L | YES | Multi-specialist coordination requires explicit dependency graph; full-engagement re-runs cost too much. |
If the plan skips decomposition on a size: L engagement, the handoff gate fails
(handoff-precheck) on missing tasks/ — same gate as a missing ## Validation log.
Inputs
engagement/criteria.md(locked)engagement/plan.md(lead, Phase 2 output)
Output
engagement/tasks/{NN}-{slug}.md— one file per atomic taskengagement/tasks/INDEX.md— manifest with wave grouping (optional but recommended for L)
Integrity rules (read before drafting tasks)
Domain-neutral rules for keeping intent intact across the conversion: decomposition-integrity.md.
Non-negotiable subset: every task names its Source (the crit-N or the plan.md section it
comes from) and repeats the Common objective; the source wins on any conflict with task
wording; a requirement that exists because of a risk carries that risk into ## Non-goals / must
not break — in marketing that is usually the claim that must stay backed by data, or the traffic
the change must not lose; small same-shape edits batch into ONE task instead of one specialist
seat each; the coverage check in §6 runs before the set goes to the workflow.
Atomic task = one of these shapes
A task is "atomic" when it can be re-run in isolation without re-running adjacent work. Marketing atoms by domain:
| Domain track | Atom shape | Example |
| SEO | one keyword cluster, OR one technical-audit slice (robots.txt, sitemap, schema, meta), OR one URL group's on-page recommendations | "task-03-cluster-pricing-keywords.md" |
| PPC | one ad group (1 audience + 1 message + 1 landing), OR one campaign-level config (bid strategy, exclusions, geo) | "task-05-adgroup-retargeting-cart-abandoners.md" |
| Analytics | one metric pull (date-bounded, source-bounded), OR one drift-analysis slice (one section/topic), OR one AI-visibility prompt batch | "task-02-metrika-traffic-mar-apr.md" |
| Content | one landing block (hero, features, FAQ, etc.), OR one ad creative variant, OR one email in a sequence, OR one banner format | "task-08-landing-block-trust-section.md" |
| Banner design | one art direction × one format (1500×500 social hero, 728×90 ad, etc.) | "task-12-banner-instagram-stories-direction-A.md" |
Anti-atom (don't do this):
- "task-01-do-seo-audit.md" — too coarse, can't be re-run partially.
- "task-02-write-copy.md" — what copy, for what surface?
- "task-03-pull-data.md" — what data, what dates, what source?
If you can't write a measurable acceptance bullet for the task, it's not atomic — split further.
Per-task contract (S2 — when A.contracts is enabled)
On M/L engagements run with A.contracts on, each tasks/{NN}.md ALSO carries a ## Contract (co-signed) section (the per-task acceptance rubric). You do NOT author it — leave it for the engine's contract handshake (owner proposes assertions in-band → reviewer co-signs and writes the section). Schema: engagement-protocol §"tasks/{id}.md → ## Contract (co-signed)". It binds the per-task review only and never waives criteria.md.
Task file template
---
task: {NN}-{slug} # NN = 2-digit zero-padded order
engagement: {engagement-name}
domain: marketing
owner: {specialist-agent-name} # marketing-seo-specialist, marketing-ppc-specialist, etc.
deliverable_type: {keyword-cluster | ad-group | landing-block | seo-audit-slice | metric-pull | drift-slice | ai-visibility-batch | banner-variant | email-step | content-piece}
depends_on: [{task-NN}, ...] # empty list if no deps
wave: {N} # tasks with same wave can run in parallel
status: pending | in_progress | done | blocked
estimated_effort: XS | S | M # XS = <30 min, S = ≤2h, M = ≤half day; L per task = split further
validators: [{validator-name}, ...] # which validators run on this task's output (subset of plan.md)
crit_refs: [crit-{N}, ...] # criteria.md bullets this task addresses
---
# Task {NN}: {one-line title}
## Goal
One sentence: what observable artefact will exist after this task is done.
## Inputs
- criteria.md crit-N: "{verbatim criterion text}"
- plan.md phase: {phase name}
- prerequisite outputs (if depends_on non-empty): {paths}
## Steps
1. {action}
2. {action}
3. {action}
Keep ≤ 5 steps. If you need more, the task is too big — split.
## Deliverable
- {artefact path or section} — e.g. `executor-reports/marketing-seo-specialist.md` § "Cluster: pricing", or `engagement/banners/instagram-stories/direction-A.png`
## Done when
- [ ] {testable bullet 1}
- [ ] {testable bullet 2}
- [ ] specialist signed off in their executor-report
- [ ] validator(s) listed above passed (if applicable)Workflow
Phase 1: Draft tasks (lead)
- Read
criteria.mdandplan.md. - For each phase in plan.md, list candidate atoms using the shape table above.
- Group atoms by dependency order → assign wave numbers.
- Wave 1: no deps (data pulls, audits)
- Wave 2: depends on wave 1 (recommendations from audits, semantic core from data)
- Wave 3: depends on wave 2 (creative based on recs, campaigns based on core)
- Write one
tasks/{NN}-{slug}.mdper atom from the template above. - Write
tasks/INDEX.mdwith the wave grouping if engagement is L (or if M with ≥5 tasks).
Phase 2: Validate (lead, single pass)
Marketing tasks don't need the dev-style 3-iteration validation cycle (no TDD anchors, no code paths). One pass is enough:
For each task file, lead self-checks:
crit_refsactually cites acriteria.mdbullet (not a phantom).owneris a real agent name (matches amarketing-*agent in~/.claude/agents/).depends_oncites realtasks/NN-*.mdfiles.## Done whenhas at least one bullet testable without the lead's word ("CSV at path X exists with header Y", not "data looks complete").- No two tasks have the same
(owner, deliverable_type)in the same wave (would compete).
If any check fails — fix the file, don't dispatch.
Phase 3: Execution (the engagement-workflow Workflow runs the waves)
The decomposed tasks/*.md feed the Workflow's deliver phase. There is NO mid-lead dispatch tier — each task's owner names the specialist agentType directly (e.g. marketing-seo-specialist, marketing-keyword-researcher, marketing-web-analyst, marketing-copywriter, marketing-banner-designer), and the Workflow dispatches it wave-by-wave (same-wave tasks run in parallel on disjoint artefact paths).
Each specialist opens its assigned task, does the work, writes the artefact to its engagement path, and appends its result to executor-reports/{specialist-agent-name}.md § "Task {NN}: {title}".
When done, specialist updates the task file's status: done and is finished.
The Workflow's deliver phase manifest-verifies the wave; the handoff step aggregates the executor-reports.
Phase 4: Iter-2 retargeting (on REJECT)
On an iter-2 REJECT, the Workflow's rework loop re-runs ONLY the tasks whose crit_refs
include the failing crit-N values (the specialist appends ## Iteration 2 to its
executor-report per protocol). The atomic decomposition is what makes this targeted: instead
of re-running the whole content phase to fix one ad creative, only the broken task re-runs.
Anti-patterns
- Don't decompose retroactively ("we already did the work, let me write the tasks now"). Either decompose at Phase 2.5 or skip it entirely (size: S/M-without-multispecialist). Retroactive task files are paperwork, not coordination.
- Don't write
tasks/*.mdcontent longer than 40 lines. If the task needs more spec, the brief belongs inexecutor-reports/{specialist}.mdafter the specialist runs, not in the task file. - Don't put the same crit-N in
crit_refsof >3 tasks. If one criterion needs that many tasks, the criterion is a deliverable list — sharpen criteria.md (lead-authority, no user touch) and respread. - Don't make a task's
ownera lead. The lead plans and the engagement-workflow dispatches; leads don't deliver. Owner must be a specialist agent. - Don't skip
crit_refs"because the task is implementation detail". Every atom must trace to a criterion. If it doesn't trace — it's scope creep, drop it or escalate via scope-sync.
What this is NOT
- Not a tech-spec (no
tech-spec.mdfor marketing). - Not a
task-creatorinvocation (dev-only — has TDD anchors, code-touching). Lead writes these directly with Write tool. - Not validated by
task-validatororreality-checkeragents (those are dev-only). Lead's Phase 2 self-check above is sufficient.
Cost estimate
For an M engagement with 8 atomic tasks: ≈10-15 min of lead time to draft + self-validate. Saves an entire phase re-run on iter-2 (≈30-60 min). Net positive at iter ≥ 1.4 reject rate; current baseline is 0.5 (1 reject in 2 engagements average), so still net positive across 4+ engagements.
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.

