ワンクリックで
project-review
Generate comprehensive project review reports from PRD and tech spec documents
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Generate comprehensive project review reports from PRD and tech spec documents
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Generate Quarto and HTML reports of local Codex session cost, token usage by model, project, coding vs cowork cost, weekly trends, annual projections, and top expensive sessions.
Check that core Sidekick integrations can authenticate and read common restricted files
Generate summary of 1:1 and meeting notes organized by audience, wins, and kudos
Capture missing TODOs from recent work context. Use when Codex needs to scan the user's Slack DMs with their manager or direct reports, manager/direct-report 1:1 docs, and leadership meeting notes for direct asks or action items assigned to the user, deduplicate against the user's configured todo app, and create missing tasks with source links and searchable metadata.
Draft concise interview scorecards from pasted long-form interview notes, nearby Google Calendar interview context, and memory/miclog/ transcript excerpts. Use when writing hiring feedback, interview scorecards, spikes/troughs, or candidate evaluation summaries.
Calculate a team's average Jira hours from Rovo Jira completed work, with optional Workday Approved Time Off absence adjustments for a date window and team roster.
| name | project-review |
| description | Generate comprehensive project review reports from PRD and tech spec documents |
| argument-hint | <document-urls> |
| auto-approve | true |
Generate comprehensive project review reports from product and technical specification documents.
This agent helps you:
@AGENTS.override.md file with team and people contextThe user provides one or more links to project documents. Your job is to:
Create temporary directory for intermediate artifacts:
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/project-review.XXXXXX")"
trap 'rm -rf "$TMP_DIR"' EXIT
For Confluence pages:
Use Atlassian Rovo MCP page fetch first when Markdown or ADF is sufficient. If Rovo is unavailable or raw storage HTML is required, fall back to python3 -m sidekick.clients.confluence get-content-from-link "<CONFLUENCE_URL>" > "$TMP_DIR/doc_name.md".
For Dropbox Paper docs:
Use Dropbox MCP (dropbox-mcp) paper_read_document first. If an intermediate file is useful for analysis, save the relevant returned Markdown/content under $TMP_DIR.
Fall back to the Chrome plugin/live Paper view second when Dropbox MCP is unavailable or lacks the needed operation. Use the local client only as a final fallback when Chrome is unavailable or unsuitable, DROPBOX_ACCESS_TOKEN is set, debugging the local client, running standalone workflows, or the user explicitly asks for the local client:
python3 -m sidekick.clients.dropbox get-paper-contents-from-link "<PAPER_URL>" > "$TMP_DIR/doc_name.md"
For Figma files: Currently not supported - note this in the report as "Link provided but content not accessible"
Important: All intermediate artifacts (fetched documents, JIRA outputs) should be saved to $TMP_DIR and cleaned up after the report is generated. Only the final report should remain in the root memory/ directory.
If JIRA issue IDs are found in the documents, fetch them to get additional context:
Use Atlassian Rovo MCP first. Fetch direct issue details with Rovo search/fetch, use Rovo JQL for related issues or parent = PROJ-123, and fall back to python3 -m sidekick.clients.jira get-issue ... or python3 -m sidekick.clients.jira roadmap-hierarchy ... only when Rovo is unavailable or lacks the needed hierarchy detail.
JIRA issues may contain:
Review each document to extract:
Look for:
Create a markdown file with the following structure. Limit the length of the entire report to 1500 words.
---
project_name: "Project Name Here"
jira_epic: "DBX-1234"
jira_initiative: "DBX-5678"
prd_link: "https://..."
design_link: "https://..."
tech_spec_link: "https://..."
product_dri: "Name <email@company.com>"
eng_manager_dri: "Name <email@company.com>"
design_dri: "Name <email@company.com>"
eng_ic_dri: "Name <email@company.com>"
first_generated: "YYYY-MM-DD HH:MM:SS"
last_updated: "YYYY-MM-DD HH:MM:SS"
---
# [Project Name] - Project Review
## Artifacts
- **JIRA Epic**: [DBX-1234](https://company.atlassian.net/browse/DBX-1234)
- **JIRA Initiative**: [DBX-5678](https://company.atlassian.net/browse/DBX-5678) or N/A
- **Product Spec**: [Link](<prd_link>)
- **Design Spec**: [Link](<design_link>)
- **Tech Spec**: [Link](<tech_spec_link>)
## Team
- **Product DRI**: Name <email@company.com>
- **Engineering Manager DRI**: Name <email@company.com>
- **Design DRI**: Name <email@company.com>
- **Engineering IC DRI**: Name <email@company.com>
## Timestamps
- **Report Generated**: YYYY-MM-DD HH:MM:SS
- **Last Updated**: YYYY-MM-DD HH:MM:SS
---
## TL;DR
[One sentence describing the project goal]
## Product Requirements Summary
[2-3 paragraph summary of what the product aims to deliver and key user-facing features]
## Complex/Controversial Requirements
Requirements that may add complexity or could be debated:
- **[Requirement name]**: [Why this is complex or controversial, impact on scope]
- **[Requirement name]**: [Why this is complex or controversial, impact on scope]
## Technical Implementation Summary
[2-3 paragraph summary of the technical approach, architecture decisions, and key technical components]
## Scope-Impacting Technical Decisions
Technical decisions that could greatly affect project scope:
- **[Decision name]**: [What was decided, why it impacts scope, potential risks]
- **[Decision name]**: [What was decided, why it impacts scope, potential risks]
## Estimates
**Total Engineering Time**: [X weeks/hours] (use the unit from the source document)
### By Milestone
| Milestone | Estimate | Confidence | Notes |
|-----------|----------|------------|-------|
| [Name] | [X hours/days/weeks] | High/Medium/Low | [Any relevant notes] |
| [Name] | [X hours/days/weeks] | High/Medium/Low | [Any relevant notes] |
### High-Risk Estimates
Areas where estimates could be higher than anticipated:
1. **[Item name]**: [Why this might take longer, estimated range]
2. **[Item name]**: [Why this might take longer, estimated range]
3. **[Item name]**: [Why this might take longer, estimated range]
## Dependencies & Risks
### Partner Team Dependencies
| Partner Team | Dependency | Risk Level | Mitigation |
|--------------|------------|------------|------------|
| [Team name or Slack channel] | [What we need from them] | High/Medium/Low | [How to mitigate] |
### External Dependencies
- **[System/Service name]**: [Description of dependency and potential impact]
- **[Concurrent project/experiment]**: [How this affects or interacts with our project]
### Dependency Risks
Key risks from dependencies that could block or delay the project:
1. **[Risk name]**: [Description of risk, likelihood, impact if it occurs]
2. **[Risk name]**: [Description of risk, likelihood, impact if it occurs]
## Tech Review Questions
Questions to ask during technical review with an engineering audience:
1. [Question about technical approach or feasibility]
2. [Question about dependencies or integration points]
3. [Question about scalability or performance considerations]
4. [Question about testing strategy or rollout plan]
5. [Question about maintenance or operational concerns]
## Kudos
Recognition for people who contributed to the project planning:
- **[Name]**: [What they did well, specific contribution]
- **[Name]**: [What they did well, specific contribution]
---
## Changelog
### [YYYY-MM-DD HH:MM:SS]
- Initial report generated
- Analyzed [N] documents: [list document names]
This report generated using [chase-sidekick](https://github.com/chase-seibert/chase-sidekick) and the [project-review skill](https://github.com/chase-seibert/chase-sidekick/tree/main/.agents/skills/project-review).
Save the report as:
The filename should be a slug version of the project title:
project-review- and use the .md extension# Example: "Basic Gating" -> memory/project-review-basic-gating.md
# Example: "Team Formation: Converting Basic Free" -> memory/project-review-team-formation-converting-basic-free.md
memory/project-review-[project-name-slug].md
After generating the report, clean up temporary files:
rm -rf "$TMP_DIR"
This ensures only the final report remains in memory/, with no intermediate artifacts.
When asked to refresh a report:
last_updated timestampExample changelog entry for refresh:
### [YYYY-MM-DD HH:MM:SS]
- Refreshed report from source documents
- Updated estimates: Total eng weeks increased from 12 to 15
- Added new requirement: [requirement name]
- Updated Tech Spec link (document was moved)
A single, clear sentence that captures the essence of what this project aims to achieve. Should be understandable to anyone in the company.
A narrative summary (not a list) that explains:
Focus on requirements that:
A narrative summary (not a list) that explains:
Focus on decisions that:
Extract all estimation data from documents:
For high-risk estimates, identify items that:
Extract dependency information from:
For each partner team dependency:
For dependency risks:
Generate thoughtful questions that would help an engineering audience:
Questions should be specific to the project, not generic.
Recognize specific contributions:
Be specific about what each person did well.
$TMP_DIR (not memory/). Clean up the temp directory with rm -rf "$TMP_DIR" after generating the report. Only the final report should exist in memory/.get-issue command)<ri:user ri:account-id="..."/> tags, try to resolve via JIRA# Create temporary directory for intermediate files
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/project-review.XXXXXX")"
trap 'rm -rf "$TMP_DIR"' EXIT
# User provides links
# Link 1: https://company.atlassian.net/wiki/spaces/ERP/pages/3002434012/
# Link 2: https://example.com/docs/project-brief
# Fetch the Confluence page through Atlassian Rovo MCP first.
# If Rovo cannot be used:
# python3 -m sidekick.clients.confluence get-content-from-link "https://company.atlassian.net/wiki/spaces/ERP/pages/3002434012/" > "$TMP_DIR/tech_spec.md"
# Fetch the Paper doc through Dropbox MCP paper_read_document first.
# If Dropbox MCP and Chrome plugin/live Paper view cannot be used:
# python3 -m sidekick.clients.dropbox get-paper-contents-from-link "https://example.com/docs/project-brief" > "$TMP_DIR/prd.md"
# Fetch the JIRA epic through Atlassian Rovo MCP first.
# If Rovo cannot be used:
# python3 -m sidekick.clients.jira get-issue PROJ-123 > "$TMP_DIR/jira-epic.txt"
# Analyze documents and generate report at memory/project-review-project-name.md
# Clean up temporary files
rm -rf "$TMP_DIR"
# User: "Refresh the Basic Gating project review"
# Create temporary directory
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/project-review.XXXXXX")"
trap 'rm -rf "$TMP_DIR"' EXIT
# Read existing report to get links
cat memory/project-review-basic-gating.md
# Extract links from front matter:
# prd_link: "https://..."
# tech_spec_link: "https://..."
# Re-fetch documents
# Re-fetch Paper through Dropbox MCP paper_read_document first.
# If Dropbox MCP and Chrome plugin/live Paper view cannot be used:
# python3 -m sidekick.clients.dropbox get-paper-contents-from-link "$PRD_LINK" > "$TMP_DIR/prd-new.md"
# Re-fetch Confluence through Atlassian Rovo MCP first.
# If Rovo cannot be used:
# python3 -m sidekick.clients.confluence get-content-from-link "$TECH_SPEC_LINK" > "$TMP_DIR/tech-spec-new.md"
# Compare with previous versions
# Update report sections that changed
# Update last_updated timestamp
# Add changelog entry
# Clean up temporary files
rm -rf "$TMP_DIR"
Final output is saved to the root memory/ directory:
project-review-[project-slug].md - The main reportIntermediate artifacts are stored in $TMP_DIR during generation:
[doc-name].html or [doc-name].md - Fetched source documentsjira-epic.txt - JIRA issue detailsjira-hierarchy.txt - Roadmap hierarchyThese temporary files are deleted after the report is generated.
This approach: