# Experimental software factory > **Experimental:** Factory skills install agent instructions. They do not add > integrations, credentials, scheduled jobs, or permission grants. Host support > and the configuration conventions can change. Factory is a set of composable skills for turning configured product and maintenance signals into reviewed software changes. Each action has its own autonomy policy: fixing an issue does not automatically authorize a reply, approval, merge, deployment, or issue closure. ## Workflow at a glance Factory uses the read-capable integrations and scheduler already available in your agent host. The source names below are examples; there is no fixed Factory connector catalog. ```mermaid flowchart LR sources["Connected sources
feedback · telemetry · issues · errors"] --> collect["/factory-collect
Current intake"] sources -. bounded history .-> lookback["/factory-lookback
Recurring patterns"] sources --> digest["/factory-human-digest
Human decision queue"] collect --> fix{"Fix policy allows it?"} collect -->|needs a person| digest lookback --> fix lookback -->|unresolved decision| digest fix -->|hold| human["Human decision"] fix -->|yes| worktree["Isolated worktree
checks and verification"] worktree --> pr["Open or update PR"] pr --> queue["/factory-review-prs
Review a PR queue"] pr --> babysit["/factory-babysit-pr
Watch one authorized PR"] pr -->|needs human judgment| digest digest --> human queue --> gates{"Separate approval and merge gates"} babysit --> gates gates -->|hold| human gates -->|allowed| ship["/factory-ship"] scheduler["Host scheduler"] -. starts enabled jobs .-> collect scheduler -.-> lookback scheduler -.-> digest scheduler -.-> queue scheduler -.-> babysit scheduler -.-> followup["/factory-watchdog · /factory-recover"] ``` The diagram shows possible handoffs, not automatic permissions. Every recurring job must be created and verified in the host scheduler. ## Install Run the interactive installer and select **Factory** to preselect the group. You can remove individual skills, then choose clients and install scope: ```sh npx @agent-native/skills@latest add ``` Every Factory skill is marked experimental in the installer and skills list. ## Skills | Skill | Use it for | | --- | --- | | `/factory`| Choose sources, policies, schedules, worktrees, and host automations. | | `/factory-collect`| Collect and triage configured feedback, product telemetry, errors, and issues. | | `/factory-lookback`| Look across a bounded history for recurring symptoms and systemic fixes. | | `/factory-human-digest`| Aggregate PRs, issues, feedback, errors, and delivery work still waiting for human judgment. | | `/factory-review-prs`| Review a filtered queue of PRs; apply separate reply, approval, and merge rules. | | `/factory-babysit-pr`| Follow one explicitly authorized PR, fix in-scope findings, and apply separate publish, reply, approval, merge, and soak rules. | | `/factory-ship`| Publish and complete delivery work under the project's policy. | | `/factory-watchdog`| Find stalled, explicitly authorized delivery work and notify only when a concrete next step is due. | | `/factory-recover`| Resume an interrupted run only when its original authorization and worktree are still valid. | `/factory-collect` handles current items. `/factory-lookback` compares history to find patterns the normal item-by-item flow has missed or only fixed temporarily. `/factory-human-digest` gathers the work held for a person across those flows. `/factory-review-prs` is a queue sweep, while `/factory-babysit-pr` follows one PR. `/factory-watchdog` looks for stopped delivery work and `/factory-recover` handles eligible interrupted runs. Use `/agent-watchdog` for a general audit of another agent's session or diff; it does not replace these Factory workflows. ## Human decision digest Run `/factory-human-digest` to see the work that did not enter an agent-handled path or still needs human judgment. With no narrower request, it reads all configured categories for the last 7 days and uses balanced detail. Narrow it in ordinary language, such as “PRs only, last 30 days, detailed,” “issues only, this month,” or “everything this week, brief.” A filter cannot expand the repositories, source scopes, or tools in the project config. The digest groups related feedback and errors when their evidence points to the same underlying UX or system problem. It keeps each source link and distinguishes the count of reports from the number of affected people. It includes PRs waiting for human review or a merge decision, issues and feedback held for clarification or policy, new answers that have not been re-triaged, and failed or stalled delivery work without a safe authorized next step. It does not take actions; use the owning Factory workflow when a decision leads to a reply, approval, merge, status change, or other write. `/factory-collect` may ask one targeted follow-up question when the configured reply policy allows it. Later collection runs check for answers and re-triage the original report with the new details under the same fix criteria. `/factory-lookback` also reads those follow-up threads to see whether the new information explains a repeated pattern or supports a systemic fix. An answer does not mark the report fixed or authorize a separate action. ## Configuration at a glance This example separates frequent intake from a slower retrospective and shows how to add project-specific prompt guidance to a skill. Replace every scope and tool name with a connection your host actually exposes. ```yaml version: 1 timezone: UTC sources: - id: support provider: slack scope: channel-id - id: product-events provider: custom scope: product-name integration: analytics-mcp read_tool: query_events - id: runtime-errors provider: sentry scope: organization/project repositories: - id: app provider: github remote: example/project workflows: collect: enabled: true schedule: every 4 hours sources: [support, product-events, runtime-errors] implement: mode: criteria allow: [verified defects in owned code] stop: [unclear product intent, security-sensitive changes] reply: mode: criteria require: [one missing detail blocks triage or verification] tone: warm and direct guidance: Ask one targeted question, then re-triage when an answer arrives. lookback: enabled: true schedule: monthly window: last 30 days compare_with: previous 30 days sources: [support, product-events, runtime-errors] implement: mode: manual human-digest: enabled: true schedule: weekly window: last 7 days repositories: [app] sources: [support, product-events, runtime-errors] include: [pull-requests, issues, feedback, errors, telemetry] granularity: balanced skill_prompts: factory-ship: | Keep release summaries concise and link the verified change. factory-human-digest: | Group repeated UX concerns while keeping every item link available. ``` `skill_prompts` is an open map: each Factory skill reads the entry matching its name and layers that text onto its normal instructions. Replace or remove a key to change the project-specific prompt. It cannot override a user's current request, grant permission, or weaken repository and host safeguards. ## Run a systemic lookback Use `/factory-collect` for a current sweep. Use `/factory-lookback` when you want to compare a bounded history across feedback, telemetry, errors, or delivery records and ask why the same class of issue keeps returning. For each cluster, connect the original reports to prior dispositions and verified changes. A useful lookback distinguishes a symptom that reappeared after a fix from a genuinely new issue that only shares similar wording. Check representative cases and sibling paths before deciding whether the cause belongs at a shared boundary. The output should make the evidence and remaining uncertainty reviewable: | Include | Why | | --- | --- | | Source links, time window, filters, pages, and unavailable sources | Shows what the lookback actually covered. | | Counts and impact with identity assumptions stated | Separates event volume from affected users or sessions. | | Prior fixes, shipped claims, and recurrence evidence | Explains why the ordinary flow did not stop the pattern. | | Confirmed cause, sibling paths, and alternatives still uncertain | Keeps systemic fixes grounded in observed behavior. | | Proposed or completed fix, regression proof, and independent action gates | Separates implementation from replies, closure, merge, and live verification. | Missing history, incomplete pagination, or a disconnected source limits the conclusion. Keep the lookback manual until its queries, schedule, worktree, and fix criteria have been verified in the host. ## Configure Run `/factory` in the project where the workflows should operate. It reads the project's `.agent-factory/config.yaml`, shows the read-capable integrations available in the host, and asks about missing scopes and policies. You can use Slack, GitHub Issues, Jira, Sentry, or another source if the host exposes a read-capable connector or MCP/API tool for it. Add your own source by describing that tool, its query arguments, filters, and pagination in the config; the Factory skills cannot connect a provider that the host does not expose. The [configuration reference](configuration.md) contains a starter config and describes every documented property, policy, custom-source field, and host limitation. The setup flow is: 1. **Choose sources and scope.** Name the connected tool and exact channel, repository, project, metric, or other boundary. 2. **Set action policies separately.** Choose when the agent may fix, reply, close, review, approve, publish, merge, deploy, recover, or notify. 3. **Add optional skill prompts.** Write a project-specific string for each Factory skill that needs extra guidance. 4. **Choose schedules and isolation.** Use host-supported schedules and a clean, automation-owned worktree for code-changing jobs. 5. **Create and verify host automations.** A YAML schedule is only a request; `/factory` must read the saved job settings back and report anything the host could not configure. The config is an agent-readable convention, not a validated schema. Unknown fields do not install connectors or create jobs. Provider-specific fields must be explained clearly and confirmed with the host. ## Start with low autonomy - Begin with manual runs or read-only source enumeration. - Confirm source scope, pagination, counts, and unavailable integrations. - Try one low-risk fix and verify it with the project's checks. - Review sample replies and notifications before enabling them. - Enable PR approval, merge, or deployment only with explicit criteria and live-state checks. Keep production deployment independent from merge. Missing, partial, stale, or unreadable evidence is a hold for a person. The skills never infer permission for one action from another. ## Limits - Integrations, credentials, scheduler features, and worktree support come from the agent host and connected tools. - Config values such as schedules, filters, and policy text may need host- or project-specific syntax. - A configured job can still fail to run. Verify its saved schedule and review run history before relying on it.