agentsclimarketplace

Project interview

Skill KhurrumMahmood/senior-vibe-engineer/.claude/skills/project-interview

Build the human-approved project profile that complements /adapt-project discovery. Reads repository facts first, then interviews the user about purpose, maturity, critical workflows, risk posture, desired direction, intentional tradeoffs, known-bad legacy patterns, and do-not-break surfaces. Writes draft artifacts under reports/project-interview/scan-<TS>/ by default; durable .engineering/project/profile.yml, profile.md, and open-questions.md require --apply.From its SKILL.md

Install
npx -y skills add KhurrumMahmood/senior-vibe-engineer --skill project-interview

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.8 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

/project-interview

Create the durable project profile that tells engineering-skills what the project is trying to be. /adapt-project can discover facts, but it cannot safely infer purpose, priorities, risk posture, intentional tradeoffs, or whether a repeated pattern is healthy.

The deliverable is a draft or applied profile:

  • .engineering/project/profile.yml — machine-readable, human-approved project intent.
  • .engineering/project/profile.md — readable summary.
  • .engineering/project/open-questions.md — unresolved questions agents should revisit.

How success is judged

  • The run writes a draft scan under ${ARTIFACT_ROOT}/reports/project-interview/scan-<TS>/ by default, or additionally writes .engineering/project/ only when --apply was explicitly requested.
  • profile.yml, profile.md, open-questions.md, and evidence.json exist in the same scan directory, and the final reply pastes the exact evidence_gate.py check output for that scan.
  • The stock-selected skill resolves both helpers from its own scripts/ directory and runs under isolated stdlib Python; no repository-level scripts/, toolkit venv, or sibling skill is required.
  • --no-host-write runs never write inside ${PROJECT_ROOT}. The command must use an ${ARTIFACT_ROOT} outside the host project, and every later read/check uses that same artifact root.
  • User answers are captured in the draft profile, or unresolved topics are left in open-questions.md; do not claim human approval without a visible user answer.

Forms

/project-interview
/project-interview --project-root /path/to/repo
/project-interview --project-root /path/to/repo --artifact-root /private/tmp/adapt/foo --no-host-write
/project-interview --apply

Default behavior writes a draft under reports/project-interview/scan-<TS>/. --apply writes durable files under .engineering/project/. --no-host-write is the dogfood mode and requires --artifact-root outside the host project.

Pipeline

  1. Resolve the installed skill and artifact roots for this run:

    PROJECT_ROOT="${PROJECT_ROOT:-$(pwd)}"
    ARTIFACT_ROOT="${ARTIFACT_ROOT:-${PROJECT_ROOT}}"
    PYTHON_BIN="${PYTHON_BIN:-python3}"
    
    if [ -n "${PROJECT_INTERVIEW_SKILL_DIR:-}" ]; then
      SKILL_DIR="${PROJECT_INTERVIEW_SKILL_DIR}"
    elif [ -f ".agents/skills/project-interview/SKILL.md" ]; then
      SKILL_DIR="$(cd .agents/skills/project-interview && pwd)"
    elif [ -f ".claude/skills/project-interview/SKILL.md" ]; then
      SKILL_DIR="$(cd .claude/skills/project-interview && pwd)"
    else
      echo "error: cannot find installed project-interview skill" >&2
      exit 2
    fi
    

    If the user invoked --no-host-write, set ARTIFACT_ROOT to a directory outside PROJECT_ROOT before running the helper. Reuse the exact same ARTIFACT_ROOT for every later read and evidence gate.

  2. Run repo-fact discovery to seed the interview:

    SCAN_DIR="$("${PYTHON_BIN}" -I -S \
      "${SKILL_DIR}/scripts/project_interview.py" draft \
      --project-root "${PROJECT_ROOT}" \
      --artifact-root "${ARTIFACT_ROOT}")"
    

    Add --no-host-write when the user requested it. The helper performs objective, lightweight discovery only and always writes an unapproved draft. Do not pass --apply here; durable apply happens only after visible human answers are captured and confirmed.

  3. Read the printed scan directory:

    test -d "${SCAN_DIR}" || { echo "missing scan: ${SCAN_DIR}" >&2; exit 2; }
    

    Read ${SCAN_DIR}/profile.yml, ${SCAN_DIR}/profile.md, and ${SCAN_DIR}/open-questions.md.

  4. Ask only questions that cannot be answered from the repo and that materially change future agent behavior:

    • What is the project for, and who is it for?
    • Which workflows are correctness-critical?
    • Is this prototype, feature-shop, durable, or regulated work?
    • Where should agents slow down?
    • Which current patterns are intentional tradeoffs?
    • Which common current patterns are known bad and must not be standardized?
    • What should the project become next?
  5. Update the profile draft with the user's answers if the run is interactive. Set user_approved: true only after visible answers and confirmation; repository facts never count as human approval. If the user is unavailable, keep user_approved: false and leave the answers as open questions. Update profile.yml, profile.md, and open-questions.md together so the evidence shapes describe the same state.

  6. Run the evidence gate:

    "${PYTHON_BIN}" -I -S "${SKILL_DIR}/scripts/evidence_gate.py" check \
      --skill project-interview \
      --scan-dir "${SCAN_DIR}"
    

    Paste the gate output in the final reply. A claim that the artifacts exist is not enough.

  7. If and only if the user invoked --apply, the evidence gate passed, and the visible answers support user_approved: true, apply the three profile artifacts:

    "${PYTHON_BIN}" -I -S \
      "${SKILL_DIR}/scripts/project_interview.py" apply \
      --project-root "${PROJECT_ROOT}" \
      --scan-dir "${SCAN_DIR}"
    

    --apply and --no-host-write are mutually exclusive intents. The helper refuses apply while user_approved is not true and rejects a symlinked .engineering/project destination.

How Future Skills Use The Profile

  • /which-skill tunes recommendations by maturity and risk posture.
  • Planning skills treat critical workflows and intentional tradeoffs as prior constraints.
  • /adapt-project --apply should prefer user-approved profile entries over inferred facts.
  • /prevent-regression prioritizes guards for do-not-break surfaces.
  • /engineering-fitness can grade profile completeness once that skill ships.

Vibe-Coded Or Legacy Projects

The interview must explicitly ask what not to standardize. In a messy project, repeated patterns are often scars, not examples. Capture those under open-questions.md or the profile's standardization policy so future agents do not turn accidental consistency into doctrine.

When things go sideways

SymptomAction
--no-host-write fails because the artifact root is inside the projectStop, choose an artifact root outside ${PROJECT_ROOT}, and rerun; do not retry without --no-host-write
The draft helper exits 2Paste stderr, fix the invocation or write-mode conflict, and do not claim a profile was produced
The printed scan directory is missingStop and report the printed path; do not fall back to a repo-local reports directory
Evidence gate reports missing tokensLeave the run incomplete; name the missing token and scan directory in the user reply
User is unavailable for interview answersKeep the generated draft and move unanswered items to open-questions.md; do not mark the profile approved
Apply reports user_approved is not trueKeep the draft, ask for the missing human answers or confirmation, and never flip approval from repository inference
--apply was requested but durable .engineering/project/ writes failKeep the draft scan as evidence, paste the write failure, and do not claim durable profile files were written

Replay case

For artifact-root or evidence-gate changes, replay the dogfood form with a temporary artifact root:

ARTIFACT_ROOT="$(mktemp -d)"
PROJECT_ROOT="$(git rev-parse --show-toplevel)"
SKILL_DIR="${PROJECT_INTERVIEW_SKILL_DIR:-${PROJECT_ROOT}/.claude/skills/project-interview}"
PYTHON_BIN="${PYTHON_BIN:-python3}"
SCAN_DIR="$("${PYTHON_BIN}" -I -S \
  "${SKILL_DIR}/scripts/project_interview.py" draft \
  --project-root "$(git rev-parse --show-toplevel)" \
  --artifact-root "${ARTIFACT_ROOT}" \
  --timestamp project-interview-smoke \
  --no-host-write)"
"${PYTHON_BIN}" -I -S "${SKILL_DIR}/scripts/evidence_gate.py" check \
  --skill project-interview \
  --scan-dir "${SCAN_DIR}"

The replay passes only when the helper prints the scan directory under ${ARTIFACT_ROOT} and the evidence gate prints OK: 3/3 required evidence shapes present.

What ships with it: 2 files

18.7 KB alongside SKILL.md, 2 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.