Skip to content

Dev - #335

Merged
alirezarezvani merged 5 commits into
mainfrom
dev
Mar 12, 2026
Merged

Dev#335
alirezarezvani merged 5 commits into
mainfrom
dev

Conversation

@alirezarezvani

@alirezarezvani alirezarezvani commented Mar 12, 2026

Copy link
Copy Markdown
Owner

Summary

Checklist

  • Target branch is dev (not main — PRs to main will be auto-closed)
  • Skill has SKILL.md with valid YAML frontmatter (name, description, license)
  • Scripts (if any) run with --help without errors
  • No hardcoded API keys, tokens, or secrets
  • No vendor-locked dependencies without open-source fallback
  • Follows existing directory structure (domain/skill-name/SKILL.md)

Type of Change

  • New skill
  • Improvement to existing skill
  • Bug fix
  • Documentation
  • Infrastructure / CI

Testing


Open with Devin

Leo and others added 5 commits March 12, 2026 05:39
- Add eval/ directory with 10 pilot skill eval configs
- Add GitHub Action (skill-eval.yml) for automated eval on PR
- Add generate-eval-config.py script for bootstrapping new evals
- Add reusable assertion helpers (skill-quality.js)
- Add eval README with setup and usage docs

Skills covered: copywriting, cto-advisor, seo-audit, content-strategy,
aws-solution-architect, agile-product-owner, senior-frontend,
senior-security, mcp-server-builder, launch-strategy

CI integration:
- Triggers on PR to dev when SKILL.md files change
- Detects which skills changed and runs only those evals
- Posts results as PR comments (non-blocking)
- Uploads full results as artifacts

No existing files modified.
Add agents/personas/ directory with:
- README.md — what personas are, how to use them, comparison with agents
- TEMPLATE.md — format specification for creating new personas
- startup-cto.md — technical co-founder persona (engineering + strategy)
- growth-marketer.md — bootstrapped growth persona (marketing + analytics)
- solo-founder.md — all-in-one indie hacker persona (cross-domain)

Each persona includes:
- Identity & mindset (personality-driven, not just skill list)
- Curated skill loadouts (primary + secondary)
- Multi-step workflows for common tasks
- Handoff rules for cross-persona collaboration
- Anti-patterns to avoid

Complements existing agents/ structure — personas for role embodiment,
agents for focused task execution.
Restructured all 3 personas + template + README to match the
agency-agents agent format:

Frontmatter alignment:
- name, description, color, emoji, vibe, tools (same fields)
- Removed non-standard fields: type, domain, skills, commands, model

Body structure alignment:
- Second-person voice: 'You are **AgentName**...'
- Emoji section headers throughout (🧠 🎯 🚨 📋 🔄 💭 🚀)
- Identity & Memory → Core Mission → Critical Rules → Capabilities
  → Workflows → Communication Style → Success Metrics → Advanced
  → Learning & Memory
- Rich personality backstory (not just skill lists)
- Concrete code/workflow examples in each section
- Pattern recognition subsection in Learning & Memory

Content deepening:
- startup-cto: 112 → 196 lines, added due diligence prep, incident response
- growth-marketer: 111 → 204 lines, added viral growth, international expansion
- solo-founder: 125 → 213 lines, added quit-your-job framework, pivot decisions
- Template rewritten to match exact section structure
- README updated with correct field documentation
feat: Add persona-based agents (Startup CTO, Growth Marketer, Solo Founder)
@alirezarezvani
alirezarezvani merged commit 13a0e6c into main Mar 12, 2026
5 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🛡️ VirusTotal Security Scan

File Analysis
eval-assertions.zip Report

Scanned with 70+ antivirus engines

Automated by ghaction-virustotal

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 5 additional findings in Devin Review.

Open in Devin Review

--output-format json \
2>&1 | tee /tmp/eval-output.log

echo "exit_code=$?" >> "$GITHUB_OUTPUT"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 $? captures tee's exit code (always 0) instead of npx promptfoo's exit code

On line 121, npx promptfoo ... 2>&1 | tee /tmp/eval-output.log pipes through tee. On line 123, echo "exit_code=$?" captures the exit code of the last command in the pipeline (tee), which almost always succeeds (exit 0), regardless of whether npx promptfoo failed. The intended behavior is clearly to capture promptfoo's exit code, but $? only reflects the rightmost command in a pipeline. The fix is to use ${PIPESTATUS[0]} (bash-specific) or add set -o pipefail at the top of the run: block so that $? reflects the first non-zero exit in the pipeline.

Suggested change
echo "exit_code=$?" >> "$GITHUB_OUTPUT"
echo "exit_code=${PIPESTATUS[0]}" >> "$GITHUB_OUTPUT"
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@claude

claude Bot commented Mar 12, 2026

Copy link
Copy Markdown

PR Review by Claude Code

CRITICAL: Wrong Target Branch - This PR targets main directly. Per CLAUDE.md, the workflow is feature->dev->main. Please retarget to dev.

SECURITY (skill-eval.yml): github.event.inputs.skill and github.base_ref are interpolated directly into shell without sanitization. Fix: pass via env vars (SKILL_INPUT, BASE_REF) and reference those in the shell body instead.

SECURITY: In detect-changes, skill_name is interpolated inside a python3 -c string. A name with quotes/newlines could break Python syntax. Pass via os.environ instead.

BUG: Pipe exit code - After piping through tee, dollar-sign-? captures tees exit code not promptfoo. Use PIPESTATUS[0] or set -o pipefail.

BUG: Redundant RESULTS_FILE fallback re-inlines matrix.skill in Python. Simplify to os.environ[RESULTS_FILE] to fail loudly on misconfiguration.

RELIABILITY: promptfoo@latest is unpinned. Pin to a specific version. Also add cache:npm to setup-node to avoid re-downloading on every run.

CODE QUALITY: generate-eval-config.py uses raw sys.argv instead of argparse. All scripts must support --help per CLAUDE.md conventions.

CODE QUALITY: eval/assertions/skill-quality.js exists but is not referenced by any eval YAML config. Wire it in or document intended usage.

DOCS: agents/personas/README.md references ./scripts/convert.sh and ./scripts/install.sh which do not exist. Remove or add them.

POSITIVES: Eval YAML configs are well-crafted with specific testable assertions. Personas (startup-cto, growth-marketer, solo-founder) are rich and consistent with agency-agents format. detect-changes only runs evals for changed skills. No existing files modified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant