swfactory 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. swfactory-1.0.0/LICENSE +21 -0
  2. swfactory-1.0.0/PKG-INFO +163 -0
  3. swfactory-1.0.0/README.md +135 -0
  4. swfactory-1.0.0/pyproject.toml +78 -0
  5. swfactory-1.0.0/pyproject.toml.orig +56 -0
  6. swfactory-1.0.0/src/swfactory/__init__.py +8 -0
  7. swfactory-1.0.0/src/swfactory/__main__.py +3 -0
  8. swfactory-1.0.0/src/swfactory/activity.py +307 -0
  9. swfactory-1.0.0/src/swfactory/board.py +494 -0
  10. swfactory-1.0.0/src/swfactory/cli.py +362 -0
  11. swfactory-1.0.0/src/swfactory/config.py +82 -0
  12. swfactory-1.0.0/src/swfactory/design.py +446 -0
  13. swfactory-1.0.0/src/swfactory/git.py +182 -0
  14. swfactory-1.0.0/src/swfactory/init.py +558 -0
  15. swfactory-1.0.0/src/swfactory/memory.py +53 -0
  16. swfactory-1.0.0/src/swfactory/orca.py +280 -0
  17. swfactory-1.0.0/src/swfactory/output.py +110 -0
  18. swfactory-1.0.0/src/swfactory/paths.py +32 -0
  19. swfactory-1.0.0/src/swfactory/py.typed +0 -0
  20. swfactory-1.0.0/src/swfactory/state.py +189 -0
  21. swfactory-1.0.0/src/swfactory/tasks.py +1031 -0
  22. swfactory-1.0.0/src/swfactory/templates/board/board.html +422 -0
  23. swfactory-1.0.0/src/swfactory/templates/codex/factory.rules +16 -0
  24. swfactory-1.0.0/src/swfactory/templates/design/design.md +38 -0
  25. swfactory-1.0.0/src/swfactory/templates/docs/AGENTS.md +65 -0
  26. swfactory-1.0.0/src/swfactory/templates/docs/CLAUDE.md +2 -0
  27. swfactory-1.0.0/src/swfactory/templates/docs/architecture.md +17 -0
  28. swfactory-1.0.0/src/swfactory/templates/docs/conventions.md +16 -0
  29. swfactory-1.0.0/src/swfactory/templates/docs/decisions/README.md +6 -0
  30. swfactory-1.0.0/src/swfactory/templates/docs/decisions/adr.md +16 -0
  31. swfactory-1.0.0/src/swfactory/templates/docs/product.md +13 -0
  32. swfactory-1.0.0/src/swfactory/templates/docs/working-agreements.md +14 -0
  33. swfactory-1.0.0/src/swfactory/templates/roles/conformance_reviewer.md +12 -0
  34. swfactory-1.0.0/src/swfactory/templates/roles/design_critic.md +4 -0
  35. swfactory-1.0.0/src/swfactory/templates/roles/designer.md +4 -0
  36. swfactory-1.0.0/src/swfactory/templates/roles/lead.md +4 -0
  37. swfactory-1.0.0/src/swfactory/templates/roles/planner.md +4 -0
  38. swfactory-1.0.0/src/swfactory/templates/roles/quality_reviewer.md +12 -0
  39. swfactory-1.0.0/src/swfactory/templates/skills/factory-board/SKILL.md +30 -0
  40. swfactory-1.0.0/src/swfactory/templates/skills/factory-design/SKILL.md +55 -0
  41. swfactory-1.0.0/src/swfactory/templates/skills/factory-design/references/approval.md +26 -0
  42. swfactory-1.0.0/src/swfactory/templates/skills/factory-design/references/reviews.md +20 -0
  43. swfactory-1.0.0/src/swfactory/templates/skills/factory-implement/SKILL.md +41 -0
  44. swfactory-1.0.0/src/swfactory/templates/skills/factory-implement/references/lead.md +70 -0
  45. swfactory-1.0.0/src/swfactory/templates/skills/factory-implement/references/memory.md +31 -0
  46. swfactory-1.0.0/src/swfactory/templates/skills/factory-init/SKILL.md +51 -0
  47. swfactory-1.0.0/src/swfactory/templates/skills/factory-status/SKILL.md +54 -0
  48. swfactory-1.0.0/src/swfactory/templates/skills/factory-status/references/recover.md +23 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MarianodelRio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: swfactory
3
+ Version: 1.0.0
4
+ Summary: A method and a CLI to build software with coding agents (Claude Code, Codex) on Orca: design, approve, implement, review and publish with evidence.
5
+ Keywords: agents,claude-code,codex,orca,workflow,cli,software-factory
6
+ Author: MarianodelRio
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Environment :: Console
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Operating System :: POSIX :: Linux
13
+ Classifier: Operating System :: MacOS
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development
20
+ Classifier: Typing :: Typed
21
+ Requires-Dist: pyyaml>=6.0
22
+ Requires-Python: >=3.11
23
+ Project-URL: Homepage, https://github.com/MarianodelRio/swfactory
24
+ Project-URL: Documentation, https://github.com/MarianodelRio/swfactory/blob/main/docs/guide.md
25
+ Project-URL: Changelog, https://github.com/MarianodelRio/swfactory/blob/main/CHANGELOG.md
26
+ Project-URL: Issues, https://github.com/MarianodelRio/swfactory/issues
27
+ Description-Content-Type: text/markdown
28
+
29
+ # swfactory
30
+
31
+ [![PyPI](https://img.shields.io/pypi/v/swfactory)](https://pypi.org/project/swfactory/)
32
+ [![CI](https://github.com/MarianodelRio/swfactory/actions/workflows/ci.yml/badge.svg)](https://github.com/MarianodelRio/swfactory/actions/workflows/ci.yml)
33
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://github.com/MarianodelRio/swfactory/blob/main/LICENSE)
34
+
35
+ A method, five agent skills and a CLI to build software with coding agents (Claude Code and Codex)
36
+ on local Orca: design and approve a change, implement each task in its own Orca workspace, review
37
+ it and publish it with evidence, follow everything on a live board, and keep what was learned in
38
+ the project's memory.
39
+
40
+ Orca runs the agents and the workspaces; the Factory brings the method and keeps its state in
41
+ readable files under `.factory/`. You talk to the agent in natural language (Spanish or English);
42
+ everything it writes to the repository is in English.
43
+
44
+ The [user guide](https://github.com/MarianodelRio/swfactory/blob/main/docs/guide.md) explains every
45
+ step in detail: what each skill does, what you decide, task states, notes and recovery, configuration and what to do when something goes wrong.
46
+
47
+ ## Requirements
48
+
49
+ - Linux or macOS with Git (Windows is not supported).
50
+ - Orca **1.4.229** or later, running locally (remote hosts are
51
+ refused), with its `orca` CLI on your `PATH`.
52
+ - [Claude Code](https://claude.com/claude-code) and/or Codex, available as agents in Orca.
53
+ - [uv](https://docs.astral.sh/uv/) (it provides Python 3.11+), with `~/.local/bin` on your `PATH`
54
+ (`uv tool update-shell` adds it).
55
+ - Optional: [`gh`](https://cli.github.com/), authenticated, to open pull requests. Without it the
56
+ Factory pushes the task branch and leaves the PR to you.
57
+
58
+ ## Install
59
+
60
+ Once per machine, with uv (recommended):
61
+
62
+ ```bash
63
+ uv tool install swfactory # the `swfactory` command, in ~/.local/bin
64
+ swfactory install-skill # copies /factory-init to ~/.claude/skills/ and ~/.agents/skills/
65
+ ```
66
+
67
+ It is a regular Python package, so `pipx install swfactory` or `pip install swfactory` (inside a
68
+ virtual environment) work too. The skills call `swfactory`, so it has to be installed, not only run
69
+ once. To try it without installing: `uvx swfactory --version`.
70
+
71
+ **Upgrade:** `uv tool upgrade swfactory` (or `pipx upgrade swfactory`), then
72
+ `swfactory install-skill`, then `/factory-init` in each project to update its skills.
73
+
74
+ ## The five skills
75
+
76
+ | Skill | What for |
77
+ |---|---|
78
+ | `/factory-init` | Prepare or update a repository: it analyzes it, proposes one plan (create, modify, delete with reason, respect, Orca actions) and applies it after a single confirmation, with backups. "solo el análisis" shows the plan only. |
79
+ | `/factory-design` | Design a change: it shows a short outline first, writes the design with its acceptance criteria and tasks, and has it critiqued. You approve it by saying "apruebo CHG-NNNN" (Claude asks for permission before the approval commit). |
80
+ | `/factory-implement` | Implement an approved task: from the main checkout it claims the task, creates its Orca workspace and launches the lead agent there. The lead writes tests and code, checkpoints, verifies every criterion with evidence, runs the reviews, updates the memory and finishes. |
81
+ | `/factory-board` | The live kanban board: opens it in an Orca tab (or your browser), closes it, gives its URL or saves a snapshot. |
82
+ | `/factory-status` | How everything is going, what needs you, notes and pauses for a running agent ("deja una nota en CHG-…", "pausa CHG-…"), recovering an interrupted task and memory maintenance. |
83
+
84
+ The skills call the `swfactory` CLI for everything that must be exact. You do not need to use it,
85
+ but you can: `swfactory --help` lists every command.
86
+
87
+ ## Five-minute walkthrough
88
+
89
+ In a Claude Code (or Codex) terminal in Orca, at the root of your repository:
90
+
91
+ 1. **Prepare the repo.**
92
+ ```
93
+ /factory-init
94
+ ```
95
+ Read the plan and confirm it. It registers the repo in Orca with its base branch, installs the
96
+ five skills in the repo, writes `AGENTS.md`, `docs/` and `.factory/config.toml` with your test, lint
97
+ and typecheck commands, and leaves everything uncommitted. Review the diff and commit it on the
98
+ base branch (or ask the agent to).
99
+
100
+ 2. **Design a change.**
101
+ ```
102
+ /factory-design add weekly recurrence to bookings
103
+ ```
104
+ Say OK to the outline; it writes `.factory/changes/CHG-0001/design.md` and `tasks.yaml`.
105
+ Read it and approve it:
106
+ ```
107
+ apruebo CHG-0001
108
+ ```
109
+ Accept the permission prompt. "vale" or "ok" is not an approval.
110
+
111
+ 3. **Implement a task.**
112
+ ```
113
+ /factory-implement CHG-0001-01 con claude, revisa claude
114
+ ```
115
+ ("with claude, review claude": the lead agent and the conformance reviewer.) A new workspace
116
+ appears in Orca's sidebar with its agent; your main session is free. Open the workspace to watch
117
+ it or talk to the agent.
118
+
119
+ 4. **Follow it.**
120
+ ```
121
+ /factory-status
122
+ /factory-board
123
+ ```
124
+ You see each task's state, acceptance criteria verified, reviews and the next step. The board
125
+ is a live kanban in an Orca tab (and in your browser, at the address `swfactory board status`
126
+ prints) with every agent and subagent running in each task. When the
127
+ task is `done`, the lead offers to push the branch and open the PR.
128
+
129
+ 5. **Integrate.** Review the PR and merge it yourself; the Factory never merges. Tasks that depend
130
+ on it move from `pending` to `ready` once it is on the base branch.
131
+
132
+ ## Good to know
133
+
134
+ - Approving or rejecting a design always needs your explicit message. Claude Code and Codex also
135
+ ask for permission before running it (`.claude/settings.json` and `.codex/rules/factory.rules`;
136
+ Codex reads project rules only if you trust the project in Codex).
137
+ - A task is `done` only when every acceptance criterion has evidence, the checks pass and the
138
+ required reviews passed on the final commit.
139
+ - The Factory only pushes the task branch: no force push, merge or branch deletion.
140
+ - Orca may launch Claude with `--dangerously-skip-permissions` (its `agentDefaultArgs` setting).
141
+ The approval rule still asks in that mode. `swfactory doctor` warns when Claude's own settings
142
+ skip permission prompts (`bypassPermissions`); it cannot read Orca's setting.
143
+ - Orca does not say whether the agent inside a terminal is still running: `/factory-status` marks
144
+ a task `interrupted` only when its terminal is closed. An agent that exited in an open terminal
145
+ looks alive; more than 10 minutes without a checkpoint only gives a warning.
146
+ - Orca does not report the model an agent used; the Factory records the `--model` it passed.
147
+ - **Verified:** end to end on Linux with Claude Code and Orca 1.4.229. **Implemented, not yet
148
+ verified on a real machine:** Codex (skills in `.agents/skills/`, the approval rule, reviews) and
149
+ macOS (the CI runs the tests there). **Not supported:** Windows.
150
+
151
+ ## Development
152
+
153
+ ```bash
154
+ git clone https://github.com/MarianodelRio/swfactory && cd swfactory
155
+ uv sync # create the environment with dev tools
156
+ uv run pytest -q # tests
157
+ uv run ruff check . # lint
158
+ uv run mypy src # typecheck
159
+ uv tool install . # install the `swfactory` command from this checkout
160
+ ```
161
+
162
+ Changes are listed in [CHANGELOG.md](https://github.com/MarianodelRio/swfactory/blob/main/CHANGELOG.md); how to publish a version is in
163
+ [docs/releasing.md](https://github.com/MarianodelRio/swfactory/blob/main/docs/releasing.md). License: [MIT](https://github.com/MarianodelRio/swfactory/blob/main/LICENSE).
@@ -0,0 +1,135 @@
1
+ # swfactory
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/swfactory)](https://pypi.org/project/swfactory/)
4
+ [![CI](https://github.com/MarianodelRio/swfactory/actions/workflows/ci.yml/badge.svg)](https://github.com/MarianodelRio/swfactory/actions/workflows/ci.yml)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](https://github.com/MarianodelRio/swfactory/blob/main/LICENSE)
6
+
7
+ A method, five agent skills and a CLI to build software with coding agents (Claude Code and Codex)
8
+ on local Orca: design and approve a change, implement each task in its own Orca workspace, review
9
+ it and publish it with evidence, follow everything on a live board, and keep what was learned in
10
+ the project's memory.
11
+
12
+ Orca runs the agents and the workspaces; the Factory brings the method and keeps its state in
13
+ readable files under `.factory/`. You talk to the agent in natural language (Spanish or English);
14
+ everything it writes to the repository is in English.
15
+
16
+ The [user guide](https://github.com/MarianodelRio/swfactory/blob/main/docs/guide.md) explains every
17
+ step in detail: what each skill does, what you decide, task states, notes and recovery, configuration and what to do when something goes wrong.
18
+
19
+ ## Requirements
20
+
21
+ - Linux or macOS with Git (Windows is not supported).
22
+ - Orca **1.4.229** or later, running locally (remote hosts are
23
+ refused), with its `orca` CLI on your `PATH`.
24
+ - [Claude Code](https://claude.com/claude-code) and/or Codex, available as agents in Orca.
25
+ - [uv](https://docs.astral.sh/uv/) (it provides Python 3.11+), with `~/.local/bin` on your `PATH`
26
+ (`uv tool update-shell` adds it).
27
+ - Optional: [`gh`](https://cli.github.com/), authenticated, to open pull requests. Without it the
28
+ Factory pushes the task branch and leaves the PR to you.
29
+
30
+ ## Install
31
+
32
+ Once per machine, with uv (recommended):
33
+
34
+ ```bash
35
+ uv tool install swfactory # the `swfactory` command, in ~/.local/bin
36
+ swfactory install-skill # copies /factory-init to ~/.claude/skills/ and ~/.agents/skills/
37
+ ```
38
+
39
+ It is a regular Python package, so `pipx install swfactory` or `pip install swfactory` (inside a
40
+ virtual environment) work too. The skills call `swfactory`, so it has to be installed, not only run
41
+ once. To try it without installing: `uvx swfactory --version`.
42
+
43
+ **Upgrade:** `uv tool upgrade swfactory` (or `pipx upgrade swfactory`), then
44
+ `swfactory install-skill`, then `/factory-init` in each project to update its skills.
45
+
46
+ ## The five skills
47
+
48
+ | Skill | What for |
49
+ |---|---|
50
+ | `/factory-init` | Prepare or update a repository: it analyzes it, proposes one plan (create, modify, delete with reason, respect, Orca actions) and applies it after a single confirmation, with backups. "solo el análisis" shows the plan only. |
51
+ | `/factory-design` | Design a change: it shows a short outline first, writes the design with its acceptance criteria and tasks, and has it critiqued. You approve it by saying "apruebo CHG-NNNN" (Claude asks for permission before the approval commit). |
52
+ | `/factory-implement` | Implement an approved task: from the main checkout it claims the task, creates its Orca workspace and launches the lead agent there. The lead writes tests and code, checkpoints, verifies every criterion with evidence, runs the reviews, updates the memory and finishes. |
53
+ | `/factory-board` | The live kanban board: opens it in an Orca tab (or your browser), closes it, gives its URL or saves a snapshot. |
54
+ | `/factory-status` | How everything is going, what needs you, notes and pauses for a running agent ("deja una nota en CHG-…", "pausa CHG-…"), recovering an interrupted task and memory maintenance. |
55
+
56
+ The skills call the `swfactory` CLI for everything that must be exact. You do not need to use it,
57
+ but you can: `swfactory --help` lists every command.
58
+
59
+ ## Five-minute walkthrough
60
+
61
+ In a Claude Code (or Codex) terminal in Orca, at the root of your repository:
62
+
63
+ 1. **Prepare the repo.**
64
+ ```
65
+ /factory-init
66
+ ```
67
+ Read the plan and confirm it. It registers the repo in Orca with its base branch, installs the
68
+ five skills in the repo, writes `AGENTS.md`, `docs/` and `.factory/config.toml` with your test, lint
69
+ and typecheck commands, and leaves everything uncommitted. Review the diff and commit it on the
70
+ base branch (or ask the agent to).
71
+
72
+ 2. **Design a change.**
73
+ ```
74
+ /factory-design add weekly recurrence to bookings
75
+ ```
76
+ Say OK to the outline; it writes `.factory/changes/CHG-0001/design.md` and `tasks.yaml`.
77
+ Read it and approve it:
78
+ ```
79
+ apruebo CHG-0001
80
+ ```
81
+ Accept the permission prompt. "vale" or "ok" is not an approval.
82
+
83
+ 3. **Implement a task.**
84
+ ```
85
+ /factory-implement CHG-0001-01 con claude, revisa claude
86
+ ```
87
+ ("with claude, review claude": the lead agent and the conformance reviewer.) A new workspace
88
+ appears in Orca's sidebar with its agent; your main session is free. Open the workspace to watch
89
+ it or talk to the agent.
90
+
91
+ 4. **Follow it.**
92
+ ```
93
+ /factory-status
94
+ /factory-board
95
+ ```
96
+ You see each task's state, acceptance criteria verified, reviews and the next step. The board
97
+ is a live kanban in an Orca tab (and in your browser, at the address `swfactory board status`
98
+ prints) with every agent and subagent running in each task. When the
99
+ task is `done`, the lead offers to push the branch and open the PR.
100
+
101
+ 5. **Integrate.** Review the PR and merge it yourself; the Factory never merges. Tasks that depend
102
+ on it move from `pending` to `ready` once it is on the base branch.
103
+
104
+ ## Good to know
105
+
106
+ - Approving or rejecting a design always needs your explicit message. Claude Code and Codex also
107
+ ask for permission before running it (`.claude/settings.json` and `.codex/rules/factory.rules`;
108
+ Codex reads project rules only if you trust the project in Codex).
109
+ - A task is `done` only when every acceptance criterion has evidence, the checks pass and the
110
+ required reviews passed on the final commit.
111
+ - The Factory only pushes the task branch: no force push, merge or branch deletion.
112
+ - Orca may launch Claude with `--dangerously-skip-permissions` (its `agentDefaultArgs` setting).
113
+ The approval rule still asks in that mode. `swfactory doctor` warns when Claude's own settings
114
+ skip permission prompts (`bypassPermissions`); it cannot read Orca's setting.
115
+ - Orca does not say whether the agent inside a terminal is still running: `/factory-status` marks
116
+ a task `interrupted` only when its terminal is closed. An agent that exited in an open terminal
117
+ looks alive; more than 10 minutes without a checkpoint only gives a warning.
118
+ - Orca does not report the model an agent used; the Factory records the `--model` it passed.
119
+ - **Verified:** end to end on Linux with Claude Code and Orca 1.4.229. **Implemented, not yet
120
+ verified on a real machine:** Codex (skills in `.agents/skills/`, the approval rule, reviews) and
121
+ macOS (the CI runs the tests there). **Not supported:** Windows.
122
+
123
+ ## Development
124
+
125
+ ```bash
126
+ git clone https://github.com/MarianodelRio/swfactory && cd swfactory
127
+ uv sync # create the environment with dev tools
128
+ uv run pytest -q # tests
129
+ uv run ruff check . # lint
130
+ uv run mypy src # typecheck
131
+ uv tool install . # install the `swfactory` command from this checkout
132
+ ```
133
+
134
+ Changes are listed in [CHANGELOG.md](https://github.com/MarianodelRio/swfactory/blob/main/CHANGELOG.md); how to publish a version is in
135
+ [docs/releasing.md](https://github.com/MarianodelRio/swfactory/blob/main/docs/releasing.md). License: [MIT](https://github.com/MarianodelRio/swfactory/blob/main/LICENSE).
@@ -0,0 +1,78 @@
1
+ [project]
2
+ name = "swfactory"
3
+ version = "1.0.0"
4
+ description = "A method and a CLI to build software with coding agents (Claude Code, Codex) on Orca: design, approve, implement, review and publish with evidence."
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = "MIT"
8
+ license-files = ["LICENSE"]
9
+ keywords = [
10
+ "agents",
11
+ "claude-code",
12
+ "codex",
13
+ "orca",
14
+ "workflow",
15
+ "cli",
16
+ "software-factory",
17
+ ]
18
+ classifiers = [
19
+ "Development Status :: 5 - Production/Stable",
20
+ "Environment :: Console",
21
+ "Intended Audience :: Developers",
22
+ "Operating System :: POSIX :: Linux",
23
+ "Operating System :: MacOS",
24
+ "Programming Language :: Python :: 3",
25
+ "Programming Language :: Python :: 3 :: Only",
26
+ "Programming Language :: Python :: 3.11",
27
+ "Programming Language :: Python :: 3.12",
28
+ "Programming Language :: Python :: 3.13",
29
+ "Topic :: Software Development",
30
+ "Typing :: Typed",
31
+ ]
32
+ dependencies = ["PyYAML>=6.0"]
33
+
34
+ [[project.authors]]
35
+ name = "MarianodelRio"
36
+
37
+ [project.urls]
38
+ Homepage = "https://github.com/MarianodelRio/swfactory"
39
+ Documentation = "https://github.com/MarianodelRio/swfactory/blob/main/docs/guide.md"
40
+ Changelog = "https://github.com/MarianodelRio/swfactory/blob/main/CHANGELOG.md"
41
+ Issues = "https://github.com/MarianodelRio/swfactory/issues"
42
+
43
+ [project.scripts]
44
+ swfactory = "swfactory.cli:run"
45
+
46
+ [dependency-groups]
47
+ dev = [
48
+ "pytest>=8",
49
+ "pytest-xdist>=3",
50
+ "ruff>=0.6",
51
+ "mypy>=1.11",
52
+ "types-PyYAML",
53
+ ]
54
+
55
+ [build-system]
56
+ requires = ["uv_build>=0.8,<0.14"]
57
+ build-backend = "uv_build"
58
+
59
+ [tool.pytest.ini_options]
60
+ testpaths = ["tests"]
61
+ addopts = "-n auto"
62
+
63
+ [tool.ruff]
64
+ line-length = 120
65
+ target-version = "py311"
66
+
67
+ [tool.ruff.lint]
68
+ select = [
69
+ "E",
70
+ "F",
71
+ "I",
72
+ "UP",
73
+ "B",
74
+ ]
75
+
76
+ [tool.mypy]
77
+ python_version = "3.11"
78
+ strict = true
@@ -0,0 +1,56 @@
1
+ [project]
2
+ name = "swfactory"
3
+ version = "1.0.0"
4
+ description = "A method and a CLI to build software with coding agents (Claude Code, Codex) on Orca: design, approve, implement, review and publish with evidence."
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = "MIT"
8
+ license-files = ["LICENSE"]
9
+ authors = [{ name = "MarianodelRio" }]
10
+ keywords = ["agents", "claude-code", "codex", "orca", "workflow", "cli", "software-factory"]
11
+ classifiers = [
12
+ "Development Status :: 5 - Production/Stable",
13
+ "Environment :: Console",
14
+ "Intended Audience :: Developers",
15
+ "Operating System :: POSIX :: Linux",
16
+ "Operating System :: MacOS",
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3 :: Only",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
22
+ "Topic :: Software Development",
23
+ "Typing :: Typed",
24
+ ]
25
+ dependencies = ["PyYAML>=6.0"]
26
+
27
+ [project.urls]
28
+ Homepage = "https://github.com/MarianodelRio/swfactory"
29
+ Documentation = "https://github.com/MarianodelRio/swfactory/blob/main/docs/guide.md"
30
+ Changelog = "https://github.com/MarianodelRio/swfactory/blob/main/CHANGELOG.md"
31
+ Issues = "https://github.com/MarianodelRio/swfactory/issues"
32
+
33
+ [project.scripts]
34
+ swfactory = "swfactory.cli:run"
35
+
36
+ [dependency-groups]
37
+ dev = ["pytest>=8", "pytest-xdist>=3", "ruff>=0.6", "mypy>=1.11", "types-PyYAML"]
38
+
39
+ [build-system]
40
+ requires = ["uv_build>=0.8,<0.14"]
41
+ build-backend = "uv_build"
42
+
43
+ [tool.pytest.ini_options]
44
+ testpaths = ["tests"]
45
+ addopts = "-n auto"
46
+
47
+ [tool.ruff]
48
+ line-length = 120
49
+ target-version = "py311"
50
+
51
+ [tool.ruff.lint]
52
+ select = ["E", "F", "I", "UP", "B"]
53
+
54
+ [tool.mypy]
55
+ python_version = "3.11"
56
+ strict = true
@@ -0,0 +1,8 @@
1
+ """swfactory: a method and a CLI to build software with coding agents on Orca."""
2
+
3
+ from importlib.metadata import PackageNotFoundError, version
4
+
5
+ try:
6
+ __version__ = version("swfactory")
7
+ except PackageNotFoundError: # running from a source tree that is not installed
8
+ __version__ = "0.0.0"
@@ -0,0 +1,3 @@
1
+ from swfactory.cli import run
2
+
3
+ run()