/code @devintern/pm DevIntern + Asana
Keep Asana as your source of truth. @devintern/pm turns rough notes into structured tasks, and @devintern/code implements them end-to-end with PRs and section moves.
How it works
What DevIntern does with Asana
Each product path keeps Asana as the handoff surface. No rip-and-replace, no new dashboard.
/pm Create Asana tasks from AI drafts
- 1 Set TASK_TRACKER=asana with a personal access token.
- 2 Choose a source type in the interactive flow.
- 3 Review and post the task to your Asana project.
/code Implement Asana tasks end-to-end
- 1 Run devintern against a task GID, task URL, or a section filter batch query.
- 2 Agent fetches the task notes, comments, and attachments.
- 3 Creates a branch, implements, self-reviews, opens a PR, and comments back on the task.
Capabilities
Built for real Asana workflows
Asana REST API for task creation and implementation
Project and workspace targeting via configuration
Repo-aware acceptance criteria in task descriptions
Status moves between project sections configured in settings.json
Batch runs with section, assignee, and completion filters
Optional story points via a numeric custom field
A single run
From Asana ticket to reviewed pull request
A single run takes an Asana task from GID to reviewed pull request. Asana has no global workflow states, so DevIntern moves tasks between the sections of your project instead.
- 1
Fetch the task
DevIntern accepts a task GID or full task URL and pulls the notes, tags, attachments, and comments over the Asana REST API.
- 2
Feasibility gate
The agent checks the task notes for enough detail to implement. An underspecified task stops the run, and the questions land as a task comment where the author will see them.
- 3
Task moves to your In Progress section
If the task passes the gate, DevIntern moves it to the section you configure per project GID in settings.json. Transitioning to done, completed, or closed marks the task complete instead of moving sections.
- 4
Implement and self-review
The agent implements on a feature branch, rereads its own diff, fixes what it catches, and only then moves toward a pull request.
- 5
Deliver back to Asana
With --create-pr, DevIntern opens a pull request, moves the task to your review section, and posts an implementation summary comment. Incomplete runs return the task to your To Do section with an explanation.
What gets written back to Asana
Comments are posted as Asana rich text with a plain-text fallback when formatting is rejected. Use --skip-comments to run without comments or section moves.
Feasibility check
Assessment comment with the questions blocking implementation
Successful implementation
Implementation summary comment with a link to the pull request
Incomplete run or max turns
Incomplete-run comment explaining what remains
Estimation run
Estimate written to your numeric custom field when configured, otherwise posted as a comment only
Batch runs
Work through Asana in batches
Asana has no query language, so DevIntern provides a small filter syntax: project, section, assignee, and completion filters plus free text matched against task names. Tasks are listed and filtered locally, which keeps batch runs working on free Asana plans.
Single task, PR included
$ devintern 1200000000000001 --create-pr Drain an open section
$ devintern --query 'section:"To Do" completed:false' --create-pr Filter by project, assignee, and text
$ devintern --query 'project:1200000000000000 assignee:Ada login bug' --create-pr project: defaults to ASANA_DEFAULT_PROJECT_GID when set. The first 100 tasks of the project are read.
AI estimation on a custom field
$ devintern 1200000000000001 --estimate Name your numeric points field in ASANA_STORY_POINTS_FIELD to have the value written; otherwise the estimate is comment-only.
Asana specifics at a glance
API
Asana REST API with a personal access token
Query language
Filter syntax (project, section, assignee, completed) plus text match via --query
Status updates
Section moves per project GID from settings.json; done or completed marks the task complete
Estimation
Numeric custom field named in ASANA_STORY_POINTS_FIELD, or comment-only without one
Plan requirements
Works on free Asana plans; tasks are filtered locally instead of using the Premium search API
Batch size
First 100 tasks of a project per query; narrow with sections on larger projects
Get connected
Setup guides and configuration
Credentials stay in project-local .env files. DevIntern runs on your machine or server, not a shared implementation cloud.
FAQ
Common questions about Asana
Does @devintern/code read Asana tasks?
Yes. Set TASK_TRACKER=asana, then run devintern against a task GID or URL. It implements the change, opens a PR, moves the task between sections, and posts summary comments. Batch selection uses filters like section:"To Do" completed:false via --query.
Where do I get an Asana token?
Create a personal access token in Asana developer settings and add it to .devintern-pm/.env.
Does DevIntern work on free Asana plans?
Yes. Batch queries list the project's tasks and filter them locally instead of calling the workspace search API, which requires Premium. Section moves, comments, and estimation all work on free plans.
How does estimation work without a points field?
Asana has no built-in estimation field. If your project has a numeric custom field for points, name it in ASANA_STORY_POINTS_FIELD and --estimate writes the value and posts the reasoning. Without it, estimates are posted as comments only.
Try DevIntern with Asana
Connect Asana, run your first workflow, and keep the trackers, repos, and reviewers your team already trusts.
Free for interactive use · FSL source-available · BYO model keys