بنقرة واحدة
sage-po
Run the ProductOwner agent inline to create a feature spec + per-story YAML files
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Run the ProductOwner agent inline to create a feature spec + per-story YAML files
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Ad hoc dev/test cycle -- runs existing tests and fixes failures iteratively
Complete feature development workflow (ProductOwner -> parallel TestCreator/Developer/Tester per story)
Ad hoc dev/test cycle -- runs existing tests and fixes failures iteratively
Run the Developer agent inline to implement code for the next ready story (or a specific story)
Complete feature development workflow (ProductOwner -> parallel TestCreator/Developer/Tester per story)
Run the ProductOwner agent inline to create a feature spec + per-story YAML files
| name | sage-po |
| description | Run the ProductOwner agent inline to create a feature spec + per-story YAML files |
| when_to_use | When you want to create a new feature specification and stories from a feature description, without running the full team workflow |
This skill runs the ProductOwner role solo: write a feature specification, break it into stories (one YAML per story), iterate on user feedback, and report when approved.
Path note: All
python .sage/_tools/...commands below assume an installed project (a.sage/directory exists at the project root). If you're running this skill from the sage-feature-team source repo itself (no.sage/exists), substitute_tools/...instead.
Usage:
/sage-po "Add dark mode"
/sage-po "Add dark mode" --feature add_dark_mode
Compute:
--feature <name> if given, else derive from the description: lowercase, replace spaces with underscores (e.g., "Add Dark Mode" -> add_dark_mode)If no feature description was provided, ask the user what feature they want.
python .sage/_tools/load_agents.py full
From the JSON, extract agents.ProductOwner and config_summary.absolute_root_dir. The rendered prompt has two kinds of content -- use them differently:
Use these sections (mode-agnostic role contract -- they apply to you):
agents/_BASE.md § Project-Specific Instructions -- the project's conventionsagents/product-owner.md § Your Jobagents/product-owner.md § Spec Format (Markdown) -- exact spec layoutagents/product-owner.md § Story Format (YAML -- one file per story) -- YAML schema, status legend, optional fields, rules for storiesagents/product-owner.md § Epics -- when to use multiple epics (default: 1), EPIC YAML schema, rules for epicsagents/product-owner.md § Critical RulesIgnore these sections (team-mode workflow that does not apply when invoked as a skill):
_BASE.md § STOP / SILENCE RULE / Starting Message / Workflow / Completion Outcomes / Progress File Updates / Key Rules (All Agents)product-owner.md § ProductOwner Workflow (After Receiving Task) -- this skill defines its own workflow belowproduct-owner.md § Approval Process (Two Steps) -- this skill handles approval inline (Step 4 below)product-owner.md § Completion Message Format -- this skill reports to the user as plain text insteadIf success is false, surface the loader's error and stop.
output_dir (default _output); create it if missingfeature_name:
spec_file = <output_dir>/<feature_name>/spec.mdepics_dir = <output_dir>/<feature_name>/epics/ (always written -- every feature has at least one epic)stories_dir = <output_dir>/<feature_name>/stories/spec_file already exists OR epics_dir exists and is non-empty OR stories_dir exists and is non-empty, ask the user: overwrite, pick a different feature_name, or abort.spec_file -- follow agents/product-owner.md § Spec Format (Markdown) exactly. Sections: Overview, Requirements, Edge Cases, Technical Notes. No Acceptance Criteria section -- AC live inside the story YAMLs. Focus on WHAT, not HOW.agents/product-owner.md § Epics § When to use multiple epics. Default to ONE epic (EPIC-1) that wraps every story; split only when warranted. Create epics_dir and write the epic YAML files. Every feature has at least one epic.stories_dir and write one YAML file per story (STORY-1.yaml, STORY-2.yaml, ...). Schema, status legend, optional fields, and rules for stories are in agents/product-owner.md § Story Format (YAML -- one file per story). Key invariants:
AC1, AC2, ...) unique across the entire featureSTORY-1, ...) -- never renumber after approvalid (STORY-1.yaml contains id: STORY-1)status: TODOepic: EPIC-N field; the union of all epics' story_ids: must equal the full set of story filesagents/product-owner.md § Critical Rules (snake_case feature name, AC must be testable, valid YAML, no tests/no code).APPROVED.APPROVED finishes the skill.APPROVED: report completion to the user as plain text:
Spec: <spec_file>
Epics dir: <epics_dir>
Stories dir: <stories_dir>
Epics: EPIC-1.yaml, EPIC-2.yaml, ... (<M> total, all status: TODO)
Stories: STORY-1.yaml, STORY-2.yaml, ... (<N> total, all status: TODO)
AC: <total_ac> distributed across <N> stories
/sage-test-creator, /sage-developer, /sage-tester for those -- or /sage-feature-team for the full workflow)TODO -- that's the next agent's jobAfter reporting to the user, record this skill's estimated token consumption:
python .sage/_tools/record_worker_usage.py --feature <feature_name> --role ProductOwner --story - --cycle 1 --inline --output-chars <approximate output chars produced>
Inline-mode entries are flagged estimated: true in _output/<feature_name>/tokens.json because we can't measure exact tokens from inside the main conversation (use /usage for the precise session total). Estimate output-chars as roughly the size of files you wrote + your final user-facing report. Failure here is non-fatal -- log and continue.