This repository was archived by the owner on Jun 3, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 104
91 lines (79 loc) · 3.1 KB
/
Copy pathproject-manager-agent.yml
File metadata and controls
91 lines (79 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
name: Project Manager Agent
on:
push:
workflow_dispatch:
inputs:
project_overview_file:
description: 'Path to the project overview markdown file'
required: false
type: string
default: '.project/project-overview.md'
task_registry_file:
description: 'Path and filename of the task registry file'
required: false
type: string
default: '.project/task-registry.md'
tasks_dir:
description: 'Directory containing tasks'
required: false
type: string
default: '.project/tasks/'
project_title:
description: 'Title of the project for the tracking issue'
required: false
type: string
prompt:
description: 'A prompt to give the agent. Overrides the default behavior of reading the repository files'
required: false
type: string
jobs:
project-manager:
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
id-token: write # Required for OIDC
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare Project Manager Script
id: project-manager-agent-script
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const systemPrompt = fs.readFileSync('.github/agent-scripts/project-manager.script.md', 'utf8');
const projectOverview = fs.readFileSync('${{ inputs.project_overview_file || '.project/project-overview.md' }}', 'utf8');
const taskRegistry = fs.readFileSync('${{ inputs.task_registry_file || '.project/task-registry.md' }}', 'utf8');
const { execSync } = require('child_process');
const tasksDir = '${{ inputs.tasks_dir || '.project/tasks' }}';
const tasksList = execSync(`find ${tasksDir}`, { encoding: 'utf8' }).trim();
const task = `project_overview:
\`\`\`markdown
${projectOverview}
\`\`\`
tasks:
\`\`\`
${tasksList}
\`\`\`
task_registory:
\`\`\`
${taskRegistry}
\`\`\`
`;
core.setOutput('system_prompt', systemPrompt);
core.setOutput('task', task);
- uses: strands-agents/strands-action@main
with:
aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
system_prompt: ${{ steps.project-manager-agent-script.outputs.system_prompt }}
thinking_type: "enabled"
budget_tokens: "8000"
model: "global.anthropic.claude-sonnet-4-5-20250929-v1:0"
anthropic_beta: "interleaved-thinking-2025-05-14"
max_tokens: "64000"
tools: "editor,file_read,shell,http_request,add_comment,list_issues,list_pull_requests,create_issue,get_issue,get_pull_request,get_pr_review_and_comments,update_issue,get_issue_comments,notebook"
task: ${{ inputs.prompt || steps.project-manager-agent-script.outputs.task }}