codee-agent 0.5.0__tar.gz → 0.5.1__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.
- {codee_agent-0.5.0 → codee_agent-0.5.1}/PKG-INFO +4 -7
- {codee_agent-0.5.0 → codee_agent-0.5.1}/README.md +3 -6
- {codee_agent-0.5.0 → codee_agent-0.5.1}/pyproject.toml +1 -1
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/admin_service.py +9 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/story-code-reviewer/SKILL.md +9 -2
- codee_agent-0.5.1/src/codee/templates/skills/story-developer/SKILL.md +34 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/story-planner/SKILL.md +9 -2
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/story-qa/SKILL.md +8 -1
- codee_agent-0.5.1/src/codee/templates/skills/story-security-reviewer/SKILL.md +38 -0
- codee_agent-0.5.1/src/codee/templates/skills/task-code-reviewer/SKILL.md +33 -0
- codee_agent-0.5.1/src/codee/templates/skills/task-developer/SKILL.md +33 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/task-qa/SKILL.md +7 -1
- codee_agent-0.5.1/src/codee/templates/skills/task-security-reviewer/SKILL.md +35 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_admin_service.py +67 -2
- codee_agent-0.5.0/src/codee/templates/skills/story-developer/SKILL.md +0 -26
- codee_agent-0.5.0/src/codee/templates/skills/task-developer/SKILL.md +0 -25
- {codee_agent-0.5.0 → codee_agent-0.5.1}/LICENSE +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/.gitignore +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/admin.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/admin_api.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/admin_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/agent_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/coding_agents.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/executor.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/init_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/cron_describe.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/mcp_config.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/runs_db.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/test_mcp_config.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/test_runs_db.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/test_trigger_cron_skills.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/test_trigger_issue_skills.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/trigger_aws_sqs_skills.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/trigger_cron_skills.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/trigger_email_skills.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/lib/trigger_issue_skills.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/mail_server.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/setup_wizard.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/start_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/tasks_providers.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/AGENTS.md +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/CLAUDE.md +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/aws-sqs-alarm-response/SKILL.md +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/cron-research-5xx-errors/SKILL.md +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/story-planner/assets/readme-template.md +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_admin_api.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_admin_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_agent_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_executor.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_init_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_memory_index.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_setup_wizard.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/test_start_cli.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/workflow_graph.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_admin/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_admin/codee_admin.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_abstract/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_abstract/provider.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_claude_code/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_claude_code/provider.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_claude_code/test.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_github_copilot/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_github_copilot/provider.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_agent_github_copilot/test.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_database/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_database/database.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_database/oauth_tokens.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_main_context/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_main_context/context.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_main_context/logging.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_main_context/test_context.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_main_context/test_logging.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_abstract/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_abstract/provider.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_azure_devops/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_azure_devops/oauth.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_azure_devops/provider.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_azure_devops/test.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_jira/__init__.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_jira/provider.py +0 -0
- {codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee_tasks_jira/test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codee-agent
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: A virtual co-worker that picks up Jira and Azure DevOps tasks and solves them with coding agents.
|
|
5
5
|
Keywords: ai,agent,jira,azure-devops,claude-code,github-copilot,automation
|
|
6
6
|
Author: Denis Kibalko
|
|
@@ -35,11 +35,11 @@ Description-Content-Type: text/markdown
|
|
|
35
35
|
|
|
36
36
|
# Codee - a virtual co-worker
|
|
37
37
|
|
|
38
|
-
The goal of this project is to provide an assistant that will integrate into your existing environment in order to help you to
|
|
38
|
+
The goal of this project is to provide an assistant that will integrate into your existing environment in order to help you to work on tasks (development, code review, testing).
|
|
39
39
|
|
|
40
|
-
Codee works with Jira and Azure DevOps as tasks
|
|
40
|
+
Codee works with Jira and Azure DevOps as tasks providers, new providers are quite easy to create, PRs are welcome.
|
|
41
41
|
|
|
42
|
-
As agents it
|
|
42
|
+
As agents it currently works with Claude Code and Github Copilot.
|
|
43
43
|
|
|
44
44
|
## Run Codee
|
|
45
45
|
|
|
@@ -71,6 +71,3 @@ uv run codee-start --debug-all # ...plus reflex, boto3, urllib3 and friends
|
|
|
71
71
|
### Skills
|
|
72
72
|
|
|
73
73
|
Codee uses skills to perform tasks. It is the same skills which are used in Claude Code, Codex and other agents.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
TODO: add skill types, x-codee skills extension
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Codee - a virtual co-worker
|
|
2
2
|
|
|
3
|
-
The goal of this project is to provide an assistant that will integrate into your existing environment in order to help you to
|
|
3
|
+
The goal of this project is to provide an assistant that will integrate into your existing environment in order to help you to work on tasks (development, code review, testing).
|
|
4
4
|
|
|
5
|
-
Codee works with Jira and Azure DevOps as tasks
|
|
5
|
+
Codee works with Jira and Azure DevOps as tasks providers, new providers are quite easy to create, PRs are welcome.
|
|
6
6
|
|
|
7
|
-
As agents it
|
|
7
|
+
As agents it currently works with Claude Code and Github Copilot.
|
|
8
8
|
|
|
9
9
|
## Run Codee
|
|
10
10
|
|
|
@@ -36,6 +36,3 @@ uv run codee-start --debug-all # ...plus reflex, boto3, urllib3 and friends
|
|
|
36
36
|
### Skills
|
|
37
37
|
|
|
38
38
|
Codee uses skills to perform tasks. It is the same skills which are used in Claude Code, Codex and other agents.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
TODO: add skill types, x-codee skills extension
|
|
@@ -380,6 +380,15 @@ def _remove_redundant_skill_transitions(
|
|
|
380
380
|
for transition in transitions:
|
|
381
381
|
if transition is candidate or transition["label"].casefold() != label:
|
|
382
382
|
continue
|
|
383
|
+
# Another entry for the same pair is a duplicate, not a detour.
|
|
384
|
+
# Counting it would make each copy the "longer path" that deletes
|
|
385
|
+
# the other, and the edge would vanish entirely. A skill that
|
|
386
|
+
# states one transition in several places (story-planner names
|
|
387
|
+
# `AI Decomposition review` for both a finished plan and an open
|
|
388
|
+
# question) is exactly what makes the agent emit those copies.
|
|
389
|
+
if (transition["source"].casefold() == source
|
|
390
|
+
and transition["target"].casefold() == target):
|
|
391
|
+
continue
|
|
383
392
|
adjacency.setdefault(transition["source"].casefold(), set()).add(
|
|
384
393
|
transition["target"].casefold()
|
|
385
394
|
)
|
{codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/story-code-reviewer/SKILL.md
RENAMED
|
@@ -3,7 +3,7 @@ name: story-code-reviewer
|
|
|
3
3
|
description: Review a pull request for one subtask in an Issue Tracker story.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
x-codee-trigger: issue
|
|
6
|
-
x-codee-issue-status: ['AI CR
|
|
6
|
+
x-codee-issue-status: ['AI Ready for CR']
|
|
7
7
|
x-codee-issue-type: story
|
|
8
8
|
argument-hint: <STORY_ID>
|
|
9
9
|
---
|
|
@@ -19,6 +19,13 @@ argument-hint: <STORY_ID>
|
|
|
19
19
|
5. Review security, correctness, requirement coverage, performance, tests, error handling, and maintainability.
|
|
20
20
|
6. Post line comments for specific defects and a findings-first pull request review.
|
|
21
21
|
7. Add a concise Issue Tracker comment with the verdict, blocking findings, and verification performed.
|
|
22
|
+
8. Move the story to `AI Ready for security review` when the review passes, or back to `AI Ready for development` when it does not.
|
|
23
|
+
|
|
24
|
+
## Status Transitions
|
|
25
|
+
|
|
26
|
+
- Review passed with no blocking findings: move the story to `AI Ready for security review`.
|
|
27
|
+
- Blocking findings, or a relevant failing pipeline: move the story to `AI Ready for development` so the developer skill addresses them.
|
|
28
|
+
- Subtasks still awaiting review: leave the story in `AI Ready for CR` so the next run reviews the next one.
|
|
22
29
|
|
|
23
30
|
## Guidelines
|
|
24
31
|
|
|
@@ -26,4 +33,4 @@ argument-hint: <STORY_ID>
|
|
|
26
33
|
- Distinguish blocking defects from optional suggestions.
|
|
27
34
|
- Do not approve changes with unresolved blocking findings.
|
|
28
35
|
- Do not approve a failing pipeline unless the failure is clearly unrelated.
|
|
29
|
-
- Make feedback actionable by naming the observed behavior, expected behavior, and affected location.
|
|
36
|
+
- Make feedback actionable by naming the observed behavior, expected behavior, and affected location.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: story-developer
|
|
3
|
+
description: Implement one subtask from an Issue Tracker story and submit a pull request.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
x-codee-trigger: issue
|
|
6
|
+
x-codee-issue-status: ['AI Ready for development', 'AI In Progress']
|
|
7
|
+
x-codee-issue-type: story
|
|
8
|
+
argument-hint: <STORY_ID>
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Story Developer
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Read the story, acceptance criteria, attachments, comments, and subtasks in the Issue Tracker.
|
|
16
|
+
2. Read `story-spec/{STORY_ID}/README.md` and the affected projects' `CLAUDE.md`, `AGENTS.md`, and relevant local skills.
|
|
17
|
+
3. Move the story to `AI In Progress` before doing any work, so a story already being worked on is not picked up as new.
|
|
18
|
+
4. Select one open subtask and inspect any related branches, pull requests, and review comments.
|
|
19
|
+
5. For bugs and regressions, reproduce the problem and identify the root cause before editing code.
|
|
20
|
+
6. Create or reuse a dedicated worktree and branch according to repository conventions.
|
|
21
|
+
7. Install dependencies, implement the smallest complete change, and update the story specification when useful.
|
|
22
|
+
8. Run focused tests, the project build, and any required browser checks.
|
|
23
|
+
9. Review the complete diff for correctness, security, regressions, and missing tests.
|
|
24
|
+
10. Commit, push, and create or update the pull request. Do not merge it unless explicitly requested.
|
|
25
|
+
11. Add a concise Issue Tracker comment describing the change, validation, pull request, and any remaining risk.
|
|
26
|
+
12. Move the story to `AI Ready for CR` once every open subtask is implemented and its pull request is open.
|
|
27
|
+
|
|
28
|
+
## Status Transitions
|
|
29
|
+
|
|
30
|
+
- Work started: move the story to `AI In Progress`.
|
|
31
|
+
- All subtasks implemented and pushed: move the story to `AI Ready for CR`.
|
|
32
|
+
- Open subtasks remain: leave the story in `AI In Progress` so the next run continues the work.
|
|
33
|
+
|
|
34
|
+
For UI work, include screenshots or video evidence when appropriate.
|
|
@@ -3,7 +3,7 @@ name: story-planner
|
|
|
3
3
|
description: Decompose an Issue Tracker story into actionable subtasks and supporting documentation.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
x-codee-trigger: issue
|
|
6
|
-
x-codee-issue-status: ['AI Decomposition
|
|
6
|
+
x-codee-issue-status: ['AI Decomposition needed']
|
|
7
7
|
x-codee-issue-type: story
|
|
8
8
|
argument-hint: <STORY_ID>
|
|
9
9
|
---
|
|
@@ -29,8 +29,15 @@ Decompose an Issue Tracker story into actionable subtasks with supporting docume
|
|
|
29
29
|
|
|
30
30
|
When a plan already exists, re-read new comments and edit the existing subtasks and specification. Create new subtasks only for newly identified work, and avoid duplicates. Move the story back to `AI Decomposition review` when the round is done.
|
|
31
31
|
|
|
32
|
+
## Status Transitions
|
|
33
|
+
|
|
34
|
+
- Plan posted: move the story to `AI Decomposition review`.
|
|
35
|
+
- Waiting on answers to clarifying questions: move the story to `AI Decomposition review` and stop.
|
|
36
|
+
|
|
37
|
+
Never move the story to `AI Ready for development` yourself. Approving the plan is a human decision.
|
|
38
|
+
|
|
32
39
|
## Guidelines
|
|
33
40
|
|
|
34
41
|
- Prefer subtasks that can be implemented and reviewed independently.
|
|
35
42
|
- Order subtasks by dependency.
|
|
36
|
-
- Keep technical details concrete and acceptance criteria verifiable.
|
|
43
|
+
- Keep technical details concrete and acceptance criteria verifiable.
|
|
@@ -24,5 +24,12 @@ Validate one subtask per invocation. QA is read-only: do not modify the implemen
|
|
|
24
24
|
8. Mark each criterion pass or fail and separate blocking defects from non-blocking observations.
|
|
25
25
|
9. Post a concise Issue Tracker report with the results, evidence, environment, and actionable reproduction steps for failures.
|
|
26
26
|
10. Update the story specification with a short QA summary when useful.
|
|
27
|
+
11. Move the story to `AI Ready for Human review` when every criterion passes, or back to `AI Ready for development` when any blocking defect was found.
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
## Status Transitions
|
|
30
|
+
|
|
31
|
+
- Every applicable acceptance criterion passed: move the story to `AI Ready for Human review`.
|
|
32
|
+
- Any blocking defect: move the story to `AI Ready for development` with the reproduction steps.
|
|
33
|
+
- Subtasks still awaiting verification: leave the story in `AI Ready for QA` so the next run validates the next one.
|
|
34
|
+
|
|
35
|
+
Create a separate Issue Tracker item for unrelated defects instead of expanding the subtask.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: story-security-reviewer
|
|
3
|
+
description: Run a security review of the pull request for one subtask in an Issue Tracker story.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
x-codee-trigger: issue
|
|
6
|
+
x-codee-issue-status: ['AI Ready for security review']
|
|
7
|
+
x-codee-issue-type: story
|
|
8
|
+
argument-hint: <STORY_ID>
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Story Security Reviewer
|
|
12
|
+
|
|
13
|
+
A security-only pass over work that already passed code review. In a general review, security findings compete with naming, tests, and performance and usually lose. This run looks at nothing else.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
1. Read the story, acceptance criteria, attachments, comments, and linked subtasks in the Issue Tracker.
|
|
18
|
+
2. Read `story-spec/{STORY_ID}/README.md` when it exists.
|
|
19
|
+
3. Select one subtask whose pull request has passed code review.
|
|
20
|
+
4. Read the project instructions, complete diff, affected files, and the trust boundaries the change touches.
|
|
21
|
+
5. Review authentication, authorization, input validation, injection, secrets and credential handling, sensitive data exposure, unsafe deserialization, path and command handling, dependency risk, and access to third-party services.
|
|
22
|
+
6. For each finding, record the vulnerable location, the attack it enables, and the concrete fix.
|
|
23
|
+
7. Post line comments for specific vulnerabilities and a findings-first pull request review.
|
|
24
|
+
8. Add a concise Issue Tracker comment with the verdict, blocking findings, and what was inspected.
|
|
25
|
+
9. Move the story to `AI Ready for QA` when the review passes, or back to `AI Ready for development` when it does not.
|
|
26
|
+
|
|
27
|
+
## Status Transitions
|
|
28
|
+
|
|
29
|
+
- No exploitable findings: move the story to `AI Ready for QA`.
|
|
30
|
+
- Any exploitable finding: move the story to `AI Ready for development` with the location and the fix.
|
|
31
|
+
- Subtasks still awaiting a security pass: leave the story in `AI Ready for security review` so the next run reviews the next one.
|
|
32
|
+
|
|
33
|
+
## Guidelines
|
|
34
|
+
|
|
35
|
+
- Review one subtask per invocation.
|
|
36
|
+
- Report only findings reachable in this codebase, and name the path that reaches them.
|
|
37
|
+
- Separate exploitable vulnerabilities from hardening suggestions.
|
|
38
|
+
- Do not modify the implementation or merge the pull request.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-code-reviewer
|
|
3
|
+
description: Review the pull request for a standalone Issue Tracker task.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
x-codee-trigger: issue
|
|
6
|
+
x-codee-issue-status: ['AI Ready for CR']
|
|
7
|
+
x-codee-issue-type: task
|
|
8
|
+
argument-hint: <TASK_ID>
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Task Code Reviewer
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Read the task, acceptance criteria, attachments, and comments in the Issue Tracker.
|
|
16
|
+
2. Locate the pull request awaiting review.
|
|
17
|
+
3. Read the project instructions, complete diff, affected files, relevant callers, tests, pipeline results, and unresolved review comments.
|
|
18
|
+
4. Review security, correctness, requirement coverage, performance, tests, error handling, and maintainability.
|
|
19
|
+
5. Post line comments for specific defects and a findings-first pull request review.
|
|
20
|
+
6. Add a concise Issue Tracker comment with the verdict, blocking findings, and verification performed.
|
|
21
|
+
7. Move the task to `AI Ready for security review` when the review passes, or back to `AI Ready for development` when it does not.
|
|
22
|
+
|
|
23
|
+
## Status Transitions
|
|
24
|
+
|
|
25
|
+
- Review passed with no blocking findings: move the task to `AI Ready for security review`.
|
|
26
|
+
- Blocking findings, or a relevant failing pipeline: move the task to `AI Ready for development` so the developer skill addresses them.
|
|
27
|
+
|
|
28
|
+
## Guidelines
|
|
29
|
+
|
|
30
|
+
- Distinguish blocking defects from optional suggestions.
|
|
31
|
+
- Do not approve changes with unresolved blocking findings.
|
|
32
|
+
- Do not approve a failing pipeline unless the failure is clearly unrelated.
|
|
33
|
+
- Make feedback actionable by naming the observed behavior, expected behavior, and affected location.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-developer
|
|
3
|
+
description: Implement a standalone Issue Tracker task and submit a pull request.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
x-codee-trigger: issue
|
|
6
|
+
x-codee-issue-status: ['AI Ready for development', 'AI In Progress']
|
|
7
|
+
x-codee-issue-type: task
|
|
8
|
+
argument-hint: <TASK_ID> [continue]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Task Developer
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Read the task, acceptance criteria, attachments, and comments in the Issue Tracker. With `continue`, also read new pull request feedback.
|
|
16
|
+
2. Read the affected projects' `CLAUDE.md`, `AGENTS.md`, and relevant local skills.
|
|
17
|
+
3. Move the task to `AI In Progress` before doing any work, so a task already being worked on is not picked up as new.
|
|
18
|
+
4. For bugs and regressions, reproduce the problem and identify the root cause before editing code. Report evidence when the issue cannot be reproduced or the root cause remains unclear.
|
|
19
|
+
5. Create or reuse a dedicated worktree and branch according to repository conventions.
|
|
20
|
+
6. Install dependencies and implement the smallest complete change that satisfies the acceptance criteria.
|
|
21
|
+
7. Run focused tests, the project build, and browser validation for UI work.
|
|
22
|
+
8. Review the complete diff for correctness, security, regressions, and missing tests.
|
|
23
|
+
9. Commit, push, and create or update the pull request. Do not merge it unless explicitly requested.
|
|
24
|
+
10. Add a concise Issue Tracker comment describing the change, validation, pull request, and any remaining risk.
|
|
25
|
+
11. Move the task to `AI Ready for CR` once the change is complete and its pull request is open.
|
|
26
|
+
|
|
27
|
+
## Status Transitions
|
|
28
|
+
|
|
29
|
+
- Work started: move the task to `AI In Progress`.
|
|
30
|
+
- Change complete and pushed: move the task to `AI Ready for CR`.
|
|
31
|
+
- Work unfinished, or the problem could not be reproduced: leave the task in `AI In Progress` and comment with what is missing.
|
|
32
|
+
|
|
33
|
+
For UI work, include screenshots or video evidence when appropriate. On continued work, always refresh the Issue Tracker item and pull request before acting.
|
|
@@ -22,5 +22,11 @@ QA is read-only: do not modify the implementation or merge its pull request.
|
|
|
22
22
|
6. For service work, test success, validation, authorization, and edge cases. Record requests, responses, HTTP codes, and relevant side effects.
|
|
23
23
|
7. Mark each criterion pass or fail and separate blocking defects from non-blocking observations.
|
|
24
24
|
8. Post a concise Issue Tracker report with the results, evidence, environment, and actionable reproduction steps for failures.
|
|
25
|
+
9. Move the task to `AI Ready for Human review` when every criterion passes, or back to `AI Ready for development` when any blocking defect was found.
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
## Status Transitions
|
|
28
|
+
|
|
29
|
+
- Every acceptance criterion passed: move the task to `AI Ready for Human review`.
|
|
30
|
+
- Any blocking defect: move the task to `AI Ready for development` with the reproduction steps.
|
|
31
|
+
|
|
32
|
+
Create a separate Issue Tracker item for unrelated defects instead of expanding the task.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-security-reviewer
|
|
3
|
+
description: Run a security review of the pull request for a standalone Issue Tracker task.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
x-codee-trigger: issue
|
|
6
|
+
x-codee-issue-status: ['AI Ready for security review']
|
|
7
|
+
x-codee-issue-type: task
|
|
8
|
+
argument-hint: <TASK_ID>
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Task Security Reviewer
|
|
12
|
+
|
|
13
|
+
A security-only pass over work that already passed code review. In a general review, security findings compete with naming, tests, and performance and usually lose. This run looks at nothing else.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
1. Read the task, acceptance criteria, attachments, and comments in the Issue Tracker.
|
|
18
|
+
2. Locate the pull request that has passed code review.
|
|
19
|
+
3. Read the project instructions, complete diff, affected files, and the trust boundaries the change touches.
|
|
20
|
+
4. Review authentication, authorization, input validation, injection, secrets and credential handling, sensitive data exposure, unsafe deserialization, path and command handling, dependency risk, and access to third-party services.
|
|
21
|
+
5. For each finding, record the vulnerable location, the attack it enables, and the concrete fix.
|
|
22
|
+
6. Post line comments for specific vulnerabilities and a findings-first pull request review.
|
|
23
|
+
7. Add a concise Issue Tracker comment with the verdict, blocking findings, and what was inspected.
|
|
24
|
+
8. Move the task to `AI Ready for QA` when the review passes, or back to `AI Ready for development` when it does not.
|
|
25
|
+
|
|
26
|
+
## Status Transitions
|
|
27
|
+
|
|
28
|
+
- No exploitable findings: move the task to `AI Ready for QA`.
|
|
29
|
+
- Any exploitable finding: move the task to `AI Ready for development` with the location and the fix.
|
|
30
|
+
|
|
31
|
+
## Guidelines
|
|
32
|
+
|
|
33
|
+
- Report only findings reachable in this codebase, and name the path that reaches them.
|
|
34
|
+
- Separate exploitable vulnerabilities from hardening suggestions.
|
|
35
|
+
- Do not modify the implementation or merge the pull request.
|
|
@@ -13,8 +13,8 @@ from codee_agent_claude_code.provider import ClaudeCodeAgent
|
|
|
13
13
|
from codee_agent_github_copilot.provider import GitHubCopilotAgent
|
|
14
14
|
|
|
15
15
|
from codee.admin_service import (
|
|
16
|
-
MCP_CHECK, TASKS_CHECK, AdminService,
|
|
17
|
-
parse_skill, repository_name)
|
|
16
|
+
MCP_CHECK, TASKS_CHECK, AdminService, _remove_redundant_skill_transitions,
|
|
17
|
+
azure_oauth, normalize_work_items, parse_skill, repository_name)
|
|
18
18
|
from codee_main_context.context import (
|
|
19
19
|
CodeeMainContext, CodingAgent, Settings, TasksProvider, load_settings,
|
|
20
20
|
save_settings)
|
|
@@ -1676,5 +1676,70 @@ class SetupTasksMcpTest(unittest.TestCase):
|
|
|
1676
1676
|
self.assertIn("not valid JSON", message)
|
|
1677
1677
|
|
|
1678
1678
|
|
|
1679
|
+
class RemoveRedundantSkillTransitionsTest(unittest.TestCase):
|
|
1680
|
+
"""Only a genuine detour removes an edge, never a repeated statement."""
|
|
1681
|
+
|
|
1682
|
+
def _transition(self, source: str, target: str, label: str,
|
|
1683
|
+
evidence: str) -> dict[str, str]:
|
|
1684
|
+
return {"source": source, "target": target,
|
|
1685
|
+
"label": label, "evidence": evidence}
|
|
1686
|
+
|
|
1687
|
+
def test_a_bypass_of_a_two_step_path_is_removed(self) -> None:
|
|
1688
|
+
transitions = [
|
|
1689
|
+
self._transition("Ready", "In progress", "dev", "first"),
|
|
1690
|
+
self._transition("In progress", "Review", "dev", "second"),
|
|
1691
|
+
self._transition("Ready", "Review", "dev", "third"),
|
|
1692
|
+
]
|
|
1693
|
+
|
|
1694
|
+
retained = _remove_redundant_skill_transitions(transitions)
|
|
1695
|
+
|
|
1696
|
+
self.assertEqual([(row["source"], row["target"]) for row in retained],
|
|
1697
|
+
[("Ready", "In progress"), ("In progress", "Review")])
|
|
1698
|
+
|
|
1699
|
+
def test_repeating_one_transition_keeps_it(self) -> None:
|
|
1700
|
+
"""A skill that names the same target twice still gets its edge.
|
|
1701
|
+
|
|
1702
|
+
story-planner moves the story to `AI Decomposition review` both when
|
|
1703
|
+
the plan is ready and when it stops to ask a question, so the agent
|
|
1704
|
+
reports the pair twice. Reading the second copy as a longer path made
|
|
1705
|
+
each delete the other and the transition disappeared from the graph.
|
|
1706
|
+
"""
|
|
1707
|
+
transitions = [
|
|
1708
|
+
self._transition("AI Decomposition needed", "AI Decomposition review",
|
|
1709
|
+
"story-planner", "plan posted"),
|
|
1710
|
+
self._transition("AI Decomposition needed", "AI Decomposition review",
|
|
1711
|
+
"story-planner", "questions asked"),
|
|
1712
|
+
]
|
|
1713
|
+
|
|
1714
|
+
retained = _remove_redundant_skill_transitions(transitions)
|
|
1715
|
+
|
|
1716
|
+
self.assertEqual(retained, transitions)
|
|
1717
|
+
|
|
1718
|
+
def test_a_duplicated_bypass_is_still_removed(self) -> None:
|
|
1719
|
+
transitions = [
|
|
1720
|
+
self._transition("Ready", "In progress", "dev", "first"),
|
|
1721
|
+
self._transition("In progress", "Review", "dev", "second"),
|
|
1722
|
+
self._transition("Ready", "Review", "dev", "third"),
|
|
1723
|
+
self._transition("Ready", "Review", "dev", "fourth"),
|
|
1724
|
+
]
|
|
1725
|
+
|
|
1726
|
+
retained = _remove_redundant_skill_transitions(transitions)
|
|
1727
|
+
|
|
1728
|
+
self.assertEqual([(row["source"], row["target"]) for row in retained],
|
|
1729
|
+
[("Ready", "In progress"), ("In progress", "Review")])
|
|
1730
|
+
|
|
1731
|
+
def test_another_skill_bypass_is_left_alone(self) -> None:
|
|
1732
|
+
"""The detour has to belong to the same skill to count as one."""
|
|
1733
|
+
transitions = [
|
|
1734
|
+
self._transition("Ready", "In progress", "dev", "first"),
|
|
1735
|
+
self._transition("In progress", "Review", "dev", "second"),
|
|
1736
|
+
self._transition("Ready", "Review", "qa", "third"),
|
|
1737
|
+
]
|
|
1738
|
+
|
|
1739
|
+
retained = _remove_redundant_skill_transitions(transitions)
|
|
1740
|
+
|
|
1741
|
+
self.assertEqual(len(retained), 3)
|
|
1742
|
+
|
|
1743
|
+
|
|
1679
1744
|
if __name__ == "__main__":
|
|
1680
1745
|
unittest.main()
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: story-developer
|
|
3
|
-
description: Implement one subtask from an Issue Tracker story and submit a pull request.
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
x-codee-trigger: issue
|
|
6
|
-
x-codee-issue-status: ['AI Ready for development', 'AI In Progress']
|
|
7
|
-
x-codee-issue-type: story
|
|
8
|
-
argument-hint: <STORY_ID>
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Story Developer
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
1. Read the story, acceptance criteria, attachments, comments, and subtasks in the Issue Tracker.
|
|
16
|
-
2. Read `story-spec/{STORY_ID}/README.md` and the affected projects' `CLAUDE.md`, `AGENTS.md`, and relevant local skills.
|
|
17
|
-
3. Select one open subtask and inspect any related branches, pull requests, and review comments.
|
|
18
|
-
4. For bugs and regressions, reproduce the problem and identify the root cause before editing code.
|
|
19
|
-
5. Create or reuse a dedicated worktree and branch according to repository conventions.
|
|
20
|
-
6. Install dependencies, implement the smallest complete change, and update the story specification when useful.
|
|
21
|
-
7. Run focused tests, the project build, and any required browser checks.
|
|
22
|
-
8. Review the complete diff for correctness, security, regressions, and missing tests.
|
|
23
|
-
9. Commit, push, and create or update the pull request. Do not merge it unless explicitly requested.
|
|
24
|
-
10. Add a concise Issue Tracker comment describing the change, validation, pull request, and any remaining risk.
|
|
25
|
-
|
|
26
|
-
For UI work, include screenshots or video evidence when appropriate.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: task-developer
|
|
3
|
-
description: Implement a standalone Issue Tracker task and submit a pull request.
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
x-codee-trigger: issue
|
|
6
|
-
x-codee-issue-status: ['AI Ready for development', 'AI In Progress', Reopened]
|
|
7
|
-
x-codee-issue-type: task
|
|
8
|
-
argument-hint: <TASK_ID> [continue]
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Task Developer
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
1. Read the task, acceptance criteria, attachments, and comments in the Issue Tracker. With `continue`, also read new pull request feedback.
|
|
16
|
-
2. Read the affected projects' `CLAUDE.md`, `AGENTS.md`, and relevant local skills.
|
|
17
|
-
3. For bugs and regressions, reproduce the problem and identify the root cause before editing code. Report evidence when the issue cannot be reproduced or the root cause remains unclear.
|
|
18
|
-
4. Create or reuse a dedicated worktree and branch according to repository conventions.
|
|
19
|
-
5. Install dependencies and implement the smallest complete change that satisfies the acceptance criteria.
|
|
20
|
-
6. Run focused tests, the project build, and browser validation for UI work.
|
|
21
|
-
7. Review the complete diff for correctness, security, regressions, and missing tests.
|
|
22
|
-
8. Commit, push, and create or update the pull request. Do not merge it unless explicitly requested.
|
|
23
|
-
9. Add a concise Issue Tracker comment describing the change, validation, pull request, and any remaining risk.
|
|
24
|
-
|
|
25
|
-
For UI work, include screenshots or video evidence when appropriate. On continued work, always refresh the Issue Tracker item and pull request before acting.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/aws-sqs-alarm-response/SKILL.md
RENAMED
|
File without changes
|
{codee_agent-0.5.0 → codee_agent-0.5.1}/src/codee/templates/skills/cron-research-5xx-errors/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|