factory-tickets
Skill145 starsChanged 21 days agoMITView on GitHub
Use when the user asks for their active worklist — open PRs with next actionable move, merged work not yet closed, takable tickets, and blocked work, classified by next move.
In this repository48 other files it gives its agents.
- architect-analyzeSkill
- architect-bootSkill
- architect-clarifySkill
- architect-implementSkill
- architect-initSkill
- architect-specifySkill
- writing-skillsSkill
- change-bootSkill
- change-clarifySkill
- change-initSkill
- change-publishSkill
- change-specifySkill
- evals-analyzeSkill
- evals-clarifySkill
- evals-implementSkill
- evals-initSkill
- evals-specifySkill
- evals-validateSkill
- factory-cleanSkill
- factory-initSkill
- factory-intentSkill
- factory-learnSkill
- factory-missionSkill
- factory-orchestratorSkill
- factory-queueSkill
- factory-releaseSkill
- factory-reviewSkill
- factory-runbookSkill
- factory-setupSkill
- mission-briefSkill
- product-analyzeSkill
- product-bootSkill
- product-clarifySkill
- product-implementSkill
- product-initSkill
- product-roadmapSkill
- product-specifySkill
- team-bootSkill
- team-constitutionSkill
- team-diagnoseSkill
- team-discoverSkill
- team-initSkill
- team-levelupSkill
- team-repairSkill
- team-setupSkill
- team-skillsSkill
- workspaceSkill
- tech-radar-bootSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 7 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
Never poll individual items.
- Distinctive: line 48
If no explicit evidence exists, leave the association cell empty.
- Distinctive: line 70
When the user asks whether the board's lifecycle labels are healthy, run the lint against the whole project.
- Distinctive: line 76
Every non-interactive issue carries exactly one lifecycle label.
- Distinctive: line 92
No Caching: Every run performs a live fetch.
- Distinctive: line 93
No Rollup Guessing: Never report check status from a rolled-up "failing" commit status if a job was merely cancelled or skipped.
- Distinctive: line 94
Unparsed Word Reporting: If the user's request contains words the query parser doesn't recognize, do not drop them.
≈ “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
factory-tickets
What this skill does
factory-tickets is the read-only personal worklist engine of the software factory. It provides the user with an immediate, live, and actionable overview of their active queue, categorized by "next move" rather than abstract status.
It operates directly against the external issue tracker and PR host (GitHub, GitLab, Linear, Jira) using the tracker-agnostic integration layer (factory-runbook/references/tracker-integration.md).
Requires: the factory-runbook skill (provides the tracker-agnostic integration layer): adlc-cli skills add tikalk/adlc-team-skills --skill factory-runbook
When to use
- At the start of a session or when planning your day, to find out exactly what needs your attention next.
- To identify which of your pull requests are ready to merge, blocked, or awaiting your review feedback.
- To discover unassigned, unblocked tickets (
spec-gated) that are ready for execution.
When NOT to use:
- To change ticket status, assignees, or edit bodies (this skill is strictly read-only).
- To execute or implement tasks (use
factory-missioninstead).
Operating Process
1. Provider & Identity Discovery
- Discover the active tracker provider and credentials (
factory-runbook/references/tracker-integration.md). - Identify the authenticated user's login. Restrict the search to:
- Pull requests authored by the authenticated account.
- Tickets assigned to the authenticated account (or another login if explicitly requested).
2. Dual-Authority Paged Queries
Never poll individual items. Run two paged searches (via MCP or CLI) to fetch the entire active set in one round-trip per source:
- Pull Request Search: fetch the user's open PRs, including: draft status, review decision, unresolved threads, named check statuses, and mergeability.
- Issue Search: fetch the user's assigned open issues, including: title, description, state, labels, milestones, and linked project metadata.
3. Match Evidence (Tracker-Agnostic)
A PR routinely cross-references multiple tickets. Associate a pull request to a ticket only when there is explicit evidence:
- A closing link established by the tracker itself.
- A branch name that contains the ticket number in the repository's convention.
- A PR title that explicitly names the ticket number. If no explicit evidence exists, leave the association cell empty. Never guess based on mere textual mention.
4. Classify Next Action (Next-Move Sections)
Assign every retrieved item to exactly one of the following priority sections. Render what was assigned — never reclassify during formatting:
- Active Pull Requests (My Turn): Pull requests where the next action belongs to the user:
Merge— required checks are green, human approval is complete. Ready-to-merge sorts first (highest priority).Address Review Feedback— changes requested by a reviewer.Fix failing check: <name>— a required CI check has failed (reported by name, not rolled up).Answer N comment threads— unresolved reviewer questions.Finish Draft— PR is still in draft state.
- Active Pull Requests (Their Turn): Pull requests waiting on external actions:
Awaiting Review— Ready for review, requested reviewer hasn't responded.Awaiting CI— required checks are still running.
- Merged, Ticket Still Open: The PR that closes this ticket has merged, but the ticket remains open on the board. Move is: verify, then close.
- Takable Now (Backlog): Open issues with lifecycle
spec-gated, automation-gatingagent-can-execute, and no pull request claiming them. (If empty, display an explicit "none"). - Waiting on Someone Else: Open issues with unresolved blocked-by dependencies, naming the blocking ticket.
Note: Epics and parent issues go in an Appendix below a rule, showing child counts and progress. They are never mixed into the active task list.
5. Lifecycle Lint (read-only)
When the user asks whether the board's lifecycle labels are healthy, run the lint against the whole project. It reads open and closed issues and writes nothing:
- bash:
scripts/bash/lifecycle-lint.sh --provider <gitlab|github> --project <path|owner/repo> [--json <file>] - PowerShell:
scripts/powershell/lifecycle-lint.ps1 -Provider <gitlab|github> -Project <path|owner/repo> [-Json <file>]
It applies the one-label rule of the lifecycle state machine (tracker-integration.md §2):
- Every non-interactive issue carries exactly one lifecycle label.
- A closed issue carries
doneorcancelled.
Each violation gets one proposed label:
- A closed issue keeps the single terminal label it has. Otherwise it gets
doneif a merged MR/PR closed it, andcancelledif none did. - An open issue with no lifecycle label gets
intent. - An open issue with several labels gets the furthest non-terminal state it carries.
- An open issue with only a terminal label gets
-: a human decides.
interactive issues are listed separately and never counted. Show the table and the summary line (N issues, V violations, I interactive). The script exits 1 when there are violations. Corrections are never made here: hand the --json plan to the confirm-gated backfill in factory-setup Mode 3.
Invariants & Safety Constraints
- Strictly Read-Only: This skill physically cannot edit, comment, create, or modify any ticket, label, assignee, or board field. No
ghorglabwrite commands are present. - No Caching: Every run performs a live fetch. A cached or stale queue is worse than none.
- No Rollup Guessing: Never report check status from a rolled-up "failing" commit status if a job was merely cancelled or skipped. Read and name the exact failing context.
- Unparsed Word Reporting: If the user's request contains words the query parser doesn't recognize, do not drop them. List them in an "Unparsed Terms" section below the table so the user knows what was ignored.
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.

