agentsclimarketplace

Office hours

Skill Yesterday-AI/ytstack/skills/office-hours

An opinionated OS for AI coding agents. Plan like a PM, execute like a senior eng. -- Claude Code plugin

Install
npx -y skills add Yesterday-AI/ytstack --skill office-hours

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

One thing to look at

  • 1 stars1 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.

What its author says it does

Copied from the file, not written here

Use as the first step when a new project, feature, or initiative has not yet been validated, or whenever the premise needs a forcing-question test. Six forcing questions expose demand reality, status quo, desperate specificity, narrowest wedge, observation, and future-fit. Produces OFFICE-HOURS.md pitch artifact with name + one-liner frontmatter that downstream skills (plan-ceo-review concept-mode, init-project, plan-milestone) consume. Thin ytstack wrapper around the vendored gstack office-hours procedure.

SKILL.md

3.1 KB, as published. Nobody here has run it

ytstack:office-hours

Thin wrapper around the vendored gstack office-hours skill (vendor/gstack/office-hours/SKILL.md). Runs the six forcing questions verbatim, then writes the outcome as a ytstack artifact. Vendor is single source of truth.

ytstack context (resolved at render time)

cd "${CLAUDE_PROJECT_DIR:-$PWD}" 2>/dev/null || true
_PROJECT_SLUG=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || basename "$(pwd)")
if [ -d "$PWD/.ytstack" ]; then _YT_DIR="$PWD/.ytstack";
elif [ -d "$HOME/.ytstack/projects/$_PROJECT_SLUG" ]; then _YT_DIR="$HOME/.ytstack/projects/$_PROJECT_SLUG";
else _YT_DIR=""; fi
echo "HAS_YTSTACK: $([ -n "$_YT_DIR" ] && echo yes || echo no)"
echo "YT_DIR: $_YT_DIR"
echo "CWD: $PWD"

ytstack invocation notes

office-hours is the greenfield entry point for ytstack (per DECISIONS 2026-04-24 "Greenfield-flow reorder"). It is also valid brownfield (project exists, a new feature needs pitch validation). The vendored procedure drives the six questions; the answers plus the compiled pitch are the artifact.

HARD-GATE: none. office-hours runs with or without .ytstack/.

After the vendored procedure completes:

  • If HAS_YTSTACK=yes: write the pitch output to $YT_DIR/OFFICE-HOURS-<short-slug>.md. The slug is a 2-4 word kebab-case summary of the pitch, derived from the pitch headline.
  • If HAS_YTSTACK=no: write to ./OFFICE-HOURS.md in the current directory. This becomes the seed for ytstack:init-project when the user is ready to commit.
  • The pitch artifact's top of file MUST contain a name: frontmatter field (project-or-feature name) and a one-liner: frontmatter field (the [noun] for [audience] that [verb + outcome] sentence). Downstream skills read these keys to populate PROJECT.md without re-asking.

Terminal State: report the path of the written pitch artifact, then suggest the next step:

  • If the pitch felt strong and the user is ready to commit: recommend ytstack:plan-ceo-review (concept mode) to stress-test premise + scope before scaffolding.
  • If the pitch still feels soft: recommend refining it manually, or re-running office-hours on the weakest question.
  • Once plan-ceo-review (and optionally plan-eng-review) has validated the pitch, recommend ytstack:init-project to scaffold the project with PROJECT.md pre-populated from the pitch.

Do NOT auto-invoke any downstream skill.

Vendored procedure (inlined verbatim)

cat "${CLAUDE_SKILL_DIR}/../../vendor/gstack/office-hours/SKILL.md"

Keep looking

Skills are one crate of 328,083. 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.