用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/tomevault-io/skills-registry --skill create-tasks命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | create-tasks |
| description | > Use when this capability is needed. |
Project context: Values in angle brackets below (e.g.
<scheme>,<JIRA_KEY>,<flag-key-enum>) are resolved at runtime — detect them from the project (xcodebuild -list -jsonfor the scheme,git/ghfor repo & owner, the branch name for the Jira key, a codebase search for flag/font files), or ask if they cannot be inferred. This plugin ships no per-project config.
Take meeting notes, specs, or a feature description as input. Detect the platform, explore the codebase, plan the implementation, and create Jira tickets.
/create-tasks <description or paste meeting notes>
$ARGUMENTS — Feature description, meeting notes, specs, or any context about work to be plannedDetect the platform automatically from the current repository:
| Signal | Platform |
|---|---|
Package.swift, *.xcodeproj, Tuist/, *.swift files | iOS |
package.json, tsconfig.json, src/api/, serverless.yml | Backend |
If ambiguous (e.g., meeting notes mention both platforms), ask the user which platform to create tasks for — or create tasks for both if explicitly requested.
customfield_10034"parent": "<EPIC-KEY>" in additional_fields. Ask the user which epic to use if not specified.assignee field.mcp__mcp-atlassian__jira_get_sprints_from_board (board ID <jira-board-id>, state active). Set via "customfield_10020": <sprint_id> in additional_fields. If no active sprint or the user specifies a different one, ask for input.mcp__mcp-atlassian__jira_get_sprints_from_board (board ID <jira-board-id>, state future) and take the first result. If no future sprint exists yet, ask the user whether to create the cleanup ticket in the backlog (omit customfield_10020) or wait.frontendexplore, feed, plan-tabreport-feature, report-improvement-fix, report-tech-improvement, report-analytics-fix| Points | Scope | Examples |
|---|---|---|
| 1 | Trivial / mechanical change, < 1 hour | Rename a file/struct, add a field to a model, update a CodingKeys enum, delete dead code |
| 2 | Moderate change, 1–3 hours | Update a query + response models, create a simple view, wire a new case into an existing switch |
| 3 | Significant change, 3–6 hours | Create a new UI component from Figma, build a new repository layer end-to-end, refactor a view model with new data flow |
["backend"]| Points | Time estimate | Scope |
|---|---|---|
| 1 | ~1–4 hours | Small, focused change — add a field to a Mongoose model, update a GraphQL type, minor refactor, add a DataLoader |
| 2 | ~5–8 hours | Moderate — new service method + tests, new repository query, wiring a new GraphQL resolver with validation and permissions |
| 3 | ~9–16 hours | Significant — new domain module end-to-end, complex data pipeline, new Lambda function, major refactor across multiple layers |
Hard rule (both platforms): If a task would exceed 3 points, split it. No task should be larger than 3 story points.
Trivial task rule (both platforms): If a task is purely mechanical and small enough to be part of another task (e.g., adding a feature flag, adding a constant, updating an env variable), fold it into the most relevant adjacent task. No standalone tickets for these.
Feature flag cleanup rule (both platforms): Whenever any task in the plan introduces a new feature flag (A/B test, experiment, gradual rollout, kill switch), pair it with a mandatory cleanup ticket scheduled in the next sprint. See Feature Flag Cleanup below for the full rule. Folding the flag creation into an adjacent task (trivial task rule above) does not exempt you from creating the cleanup ticket.
$ARGUMENTS to extract:
*.model.ts and *.entities.ts in the relevant domain; check for existing migrationssrc/api/*-api.ts; identify existing typeDefs, resolver signatures, Joi validations, and shield permissions*.service.ts and *.repository.ts in the relevant domain; identify methods, patterns, and event bus usagesrc/dataLoaders/, feature flag infrastructure in src/domain/config/, event bus usage, Lambda functions in src/functions/next):| # | Task | SP | Sprint | Files affected |
|---|------|----|---------|----------------|
| 1 | ... | 2 | current | path/to/file.swift |
| 2 | Remove <flag> feature flag and keep <variant> flow | 1 | next | path/to/file.swift |
[FEATURE] <concise task description>{"customfield_10034": <points>, "parent": "<EPIC-KEY>", "customfield_10020": <sprint_id>}active)future, first result)| # | Task | SP | Sprint | Key |
|---|------|----|---------|-----|
| 1 | ... | 2 | current | <JIRA_KEY>-XXXX |
| 2 | ... | 3 | current | <JIRA_KEY>-XXXX |
| 3 | Remove <flag> feature flag and keep <variant> flow | 1 | next | <JIRA_KEY>-XXXX |
| | **Total (current)** | **5** | | |
| | **Total (next)** | **1** | | |
Replace the sections below with the structure of your own project. The default template assumes a Tuist-based iOS app + a Node.js GraphQL backend; trim or rewrite the sections that don't apply.
Projects/
App/<scheme>/ → Main app target
Modules/ → Feature modules
UIComponents/ → Reusable UI components (design system)
SharedModels/ → Shared data models across modules
Service/ → Network layer, repositories
FeatureToggle/ → Feature flags
Analytics/ → Tracking events
AppStrings/ → Localization
Architecture: MVVM + Coordinator + Factory (adapt to your stack)
Data pipeline: GraphQL query → Response model → Mapper → Repository → ViewModel → View
Key conventions (customize per project):
<font-scale-tokens> tokens only — no Font.custom(...)src/api/ → GraphQL typeDefs + resolvers + validations + permissions (thin layer)
src/domain/ → Business logic grouped by bounded context (preferred for new code)
<context-1>/ → e.g. user, billing, content — one folder per domain
<context-2>/
config/ → Feature flags
src/services/ → Legacy modules (do not add new code here)
src/functions/ → Serverless handlers (Lambda, Cloud Functions, etc.)
src/integrations/ → External APIs
src/dataLoaders/ → Per-request batched loaders (prevent N+1)
Architecture: Domain-driven layers (API → Service → Repository → Model)
Key conventions (customize per project):
src/domain/, never src/services/Feature flags are introduced to ship safely, run experiments, or roll out gradually — but a flag left in the code after the experiment ends turns into dead code that nobody owns. To prevent that, every time a task creates a new flag this skill must also create a paired cleanup ticket scheduled for the next sprint.
A task triggers a cleanup ticket if it introduces any of the following:
FeatureToggle module, Backend src/domain/config/)If the task only reads an existing flag, no cleanup ticket is needed.
For each new flag, generate one cleanup task with the following shape:
[FEATURE] Remove <flag_name> feature flag and keep <kept_variant> flow
<kept_variant> is the experiment branch the team expects to win (e.g., treatment, control, variant_A, the new UI, etc.)winning variant and call out the TBD in the description/feature-flag-remove skill as the execution playbookreport-tech-improvement (iOS) since this is internal cleanup, not user-facing work.future, first result from board 105). See Jira Configuration for the fallback when no future sprint exists.Before creating the cleanup ticket, confirm:
Do not ask about whether the cleanup ticket should exist — it is mandatory.
| # | Task | SP | Key |
|---|---|---|---|
| 1 | Implement new editorialFeedItemsWithShortcuts query and response models | 3 | <JIRA_KEY>-XXXX |
| 2 | Change feed container from HStack to horizontal ScrollView | 1 | <JIRA_KEY>-XXXX |
| 3 | Decode new response into dynamic FeedShortcuts buttons | 3 | <JIRA_KEY>-XXXX |
| 4 | Rename CategoryButton to FeedShortcutsButton | 1 | <JIRA_KEY>-XXXX |
| 5 | Remove hardcoded NEW tag code | 2 | <JIRA_KEY>-XXXX |
| Total | 10 |
| # | Task | SP | Key |
|---|---|---|---|
| 1 | Add exportedAt field to UserTravel Mongoose model + migration | 1 | <JIRA_KEY>-XXXX |
| 2 | Add findExportableByUserId to userTravel.repository.ts | 2 | <JIRA_KEY>-XXXX |
| 3 | Implement exportTravelHistory in userTravel.service.ts with CSV serialization + unit tests | 3 | <JIRA_KEY>-XXXX |
| 4 | Add exportTravelHistory mutation to user-travel-api.ts (typeDefs, resolver, Joi, shield) | 2 | <JIRA_KEY>-XXXX |
| 5 | Remove legacy travelDump debug resolver | 1 | <JIRA_KEY>-XXXX |
| Total | 9 |
The implementation introduces a editorial_card_v2_enabled flag. The flag setup itself is folded into task 2 (no standalone "add flag" ticket), and a paired cleanup ticket lands in the next sprint.
| # | Task | SP | Sprint | Key |
|---|---|---|---|---|
| 1 | Build EditorialFeedCardV2 component from Figma | 3 | current | <JIRA_KEY>-XXXX |
| 2 | Gate EditorialFeedItem behind editorial_card_v2_enabled flag (add flag entry + branch rendering) | 2 | current | <JIRA_KEY>-XXXX |
| 3 | Add analytics events for V2 card impression/tap | 2 | current | <JIRA_KEY>-XXXX |
| 4 | Remove editorial_card_v2_enabled flag and keep V2 flow (delete legacy EditorialFeedCard, remove flag entry, drop dead-flow tests) | 1 | next | <JIRA_KEY>-XXXX |
| Total (current) | 7 | |||
| Total (next) | 1 |
Source: carloshpdoc/ios-workflow-claude — distributed by TomeVault.