@firatcand/roster 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -215
- package/agents/lesson-drafter.md +3 -8
- package/agents/pattern-detector.md +0 -1
- package/bin/roster.js +7233 -1197
- package/data/plan-ceilings.yaml +57 -0
- package/package.json +8 -3
- package/skills/chief-of-staff/SKILL.md +199 -59
- package/skills/dreamer/SKILL.md +8 -7
- package/skills/roster-orchestrator/SKILL.md +53 -25
- package/templates/CLAUDE.project.template.md +1 -1
- package/templates/CONTEXT.template.md +2 -2
- package/templates/gitignore-defaults.txt +2 -0
- package/templates/hooks/banner.sh +47 -0
- package/templates/scaffold/chief-of-staff/README.md +16 -24
- package/templates/scaffold/chief-of-staff/agent.md +22 -32
- package/templates/scaffold/chief-of-staff/plans/audit-agent.yaml +4 -4
- package/templates/scaffold/chief-of-staff/plans/audit-repo.yaml +5 -4
- package/templates/scaffold/chief-of-staff/plans/create-agent.yaml +5 -34
- package/templates/scaffold/config/project.yaml.template +10 -0
- package/templates/scaffold/conventions.md +188 -173
- package/templates/scaffold/dreamer/README.md +2 -2
- package/templates/scaffold/dreamer/agent.md +0 -1
- package/templates/scaffold/dreamer/plans/nightly-reflection.yaml +23 -37
- package/templates/scaffold/dreamer/subagents/lesson-drafter.md +2 -7
- package/templates/scaffold/{projects/_demo/guidelines → guidelines}/asset-links.md +4 -0
- package/templates/scaffold/{projects/_demo/guidelines → guidelines}/brand-book.md +4 -0
- package/templates/scaffold/{projects/_demo/guidelines → guidelines}/messaging.md +4 -0
- package/templates/scaffold/{projects/_demo/guidelines → guidelines}/voice.md +4 -0
- package/templates/scaffold/logs/cron/.gitkeep +1 -0
- package/templates/scaffold/ops/EXPERT.md +5 -5
- package/templates/scaffold/scripts/audit-agent.sh +326 -0
- package/templates/scaffold/scripts/audit-repo.sh +218 -0
- package/templates/scaffold/scripts/create-function.sh +267 -0
- package/templates/scaffold/scripts/lib/README.md +6 -1
- package/templates/scaffold/scripts/lib/bindings-prompt.sh +53 -0
- package/templates/scaffold/scripts/lib/functions.sh +17 -5
- package/templates/scaffold/scripts/new-agent.sh +416 -0
- package/templates/scaffold/scripts/rename-agent.sh +91 -0
- package/templates/scaffold/scripts/save-state.sh +32 -0
- package/agents/critic.md +0 -74
- package/agents/enricher.md +0 -56
- package/agents/promotion-arbiter.md +0 -71
- package/agents/prospector.md +0 -51
- package/agents/writer.md +0 -58
- package/skills/sdr/SKILL.md +0 -147
- package/templates/scaffold/chief-of-staff/plans/add-agent-to-project.yaml +0 -45
- package/templates/scaffold/chief-of-staff/plans/archive-project.yaml +0 -51
- package/templates/scaffold/chief-of-staff/plans/audit-project.yaml +0 -34
- package/templates/scaffold/chief-of-staff/plans/create-project.yaml +0 -65
- package/templates/scaffold/chief-of-staff/plans/remove-agent-from-project.yaml +0 -50
- package/templates/scaffold/chief-of-staff/plans/rename-project.yaml +0 -62
- package/templates/scaffold/chief-of-staff/plans/unarchive-project.yaml +0 -41
- package/templates/scaffold/dreamer/subagents/promotion-arbiter.md +0 -64
- package/templates/scaffold/gtm/sdr/.claude/settings.json +0 -3
- package/templates/scaffold/gtm/sdr/.mcp.json +0 -21
- package/templates/scaffold/gtm/sdr/README.md +0 -46
- package/templates/scaffold/gtm/sdr/agent.md +0 -136
- package/templates/scaffold/gtm/sdr/plans/cold-outreach.yaml +0 -92
- package/templates/scaffold/gtm/sdr/projects/_demo/asset-references.md +0 -7
- package/templates/scaffold/gtm/sdr/projects/_demo/config/default.yaml +0 -69
- package/templates/scaffold/gtm/sdr/projects/_demo/log/feedback/.gitkeep +0 -0
- package/templates/scaffold/gtm/sdr/projects/_demo/log/runs/.gitkeep +0 -0
- package/templates/scaffold/gtm/sdr/projects/_demo/playbook/.gitkeep +0 -0
- package/templates/scaffold/gtm/sdr/subagents/critic.md +0 -67
- package/templates/scaffold/gtm/sdr/subagents/enricher.md +0 -49
- package/templates/scaffold/gtm/sdr/subagents/prospector.md +0 -44
- package/templates/scaffold/gtm/sdr/subagents/writer.md +0 -51
- package/templates/scaffold/projects/_demo/CLAUDE.md +0 -35
- package/templates/scaffold/projects/_demo/README.md +0 -16
- package/templates/scaffold/projects/_demo/assets/.gitkeep +0 -0
- package/templates/scaffold/projects/_demo/config/default.yaml +0 -28
- package/templates/scaffold/projects/_demo/state.md +0 -11
- package/templates/scaffold/scripts/new-project.sh +0 -125
- /package/templates/scaffold/gtm/{sdr/playbook/.gitkeep → .gitkeep} +0 -0
- /package/templates/scaffold/{projects/_demo/guidelines → guidelines}/icps/_persona-template.md +0 -0
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
project: _demo
|
|
3
|
-
type: example
|
|
4
|
-
created: 2026-05-03
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Acme Corp — Demo Project
|
|
8
|
-
|
|
9
|
-
This is a sample project demonstrating how `roster` organizes work. Acme Corp is a fictional B2B SaaS company that helps small businesses automate their accounting workflows.
|
|
10
|
-
|
|
11
|
-
This demo is **safe to delete**. It exists to show the structure of a populated project. Real projects go in `projects/<your-project-name>/`.
|
|
12
|
-
|
|
13
|
-
## Identity
|
|
14
|
-
|
|
15
|
-
- Product: Acme Books — accounting automation for SMBs
|
|
16
|
-
- Stage: early-stage SaaS, post-launch
|
|
17
|
-
- Audience: SMB owners and bookkeepers
|
|
18
|
-
- Primary motion: outbound to bookkeeping firms and SMB owners
|
|
19
|
-
|
|
20
|
-
## Active agent instances
|
|
21
|
-
|
|
22
|
-
- `gtm/sdr/projects/_demo/` — outbound prospecting and cold outreach
|
|
23
|
-
|
|
24
|
-
## Files in this project
|
|
25
|
-
|
|
26
|
-
- `CLAUDE.md` — this file
|
|
27
|
-
- `state.md` — session continuity (auto-updated)
|
|
28
|
-
- `guidelines/` — substrate (voice, ICPs, messaging, brand-book, etc.)
|
|
29
|
-
|
|
30
|
-
## How to use as a learning example
|
|
31
|
-
|
|
32
|
-
1. Browse `projects/_demo/guidelines/` to see what filled-in substrate looks like
|
|
33
|
-
2. Browse `gtm/sdr/projects/_demo/config/default.yaml` to see how an agent instance is configured
|
|
34
|
-
3. Try running the agent against this demo: `/sdr run cold-outreach for _demo` (will prompt for filled bindings — feel free to use placeholder values for the test)
|
|
35
|
-
4. Delete this entire `_demo/` directory and its instance(s) when you're ready to start fresh
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# _demo
|
|
2
|
-
|
|
3
|
-
Placeholder project for testing roster workflows. Rename or duplicate this directory to
|
|
4
|
-
create a real project — `scripts/new-project.sh <name>` automates that in Phase 2.
|
|
5
|
-
|
|
6
|
-
## Structure
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
projects/_demo/
|
|
10
|
-
├── guidelines/ # written by function-level experts (added in Phase 2)
|
|
11
|
-
├── config/default.yaml # per-project agent config (added in Phase 2)
|
|
12
|
-
└── state.md # session continuity notes (max 5 lines; updated via /save-state)
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
In Phase 1 this directory only proves `roster init` writes files to the right place. The
|
|
16
|
-
full project substrate lands when Phase 2 ships `templates/scaffold/` (see ROS-17).
|
|
File without changes
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
project: _demo
|
|
3
|
-
created: 2026-05-03
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Project-level config — Acme Corp demo
|
|
7
|
-
#
|
|
8
|
-
# Cross-agent defaults for this project. Agent-scoped config (per-instance
|
|
9
|
-
# tool bindings, channel caps, scoring thresholds) lives at:
|
|
10
|
-
# <function>/<agent>/projects/<project>/config/default.yaml
|
|
11
|
-
#
|
|
12
|
-
# Keep this file thin. It's read by chief-of-staff for audit reports and
|
|
13
|
-
# by any agent that needs project-wide signals.
|
|
14
|
-
|
|
15
|
-
# Display name shown in reports and Slack messages.
|
|
16
|
-
display_name: Acme Corp
|
|
17
|
-
|
|
18
|
-
# Stage: idea | pre-launch | early | growth | mature
|
|
19
|
-
stage: early
|
|
20
|
-
|
|
21
|
-
# Primary go-to-market motion. Drives default agent suggestions.
|
|
22
|
-
# Options: outbound | inbound | plg | hybrid
|
|
23
|
-
motion: outbound
|
|
24
|
-
|
|
25
|
-
# Default approval channel for HITL — used when an agent's instance config
|
|
26
|
-
# leaves approval_channel unset.
|
|
27
|
-
# Options: slack | inline | auto
|
|
28
|
-
approval_channel: auto
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
last_session: 2026-05-03
|
|
3
|
-
focus: (none — demo project)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Acme Corp — Session State
|
|
7
|
-
|
|
8
|
-
This file tracks short-term context across Claude Code sessions for this project. Updated via `/save-state` or by the user explicitly. Five lines max.
|
|
9
|
-
|
|
10
|
-
- Status: demo / illustrative
|
|
11
|
-
- Next task: replace with your real project, or delete `_demo/` entirely
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# new-project.sh — scaffold a new project substrate inside a roster workspace.
|
|
3
|
-
#
|
|
4
|
-
# Usage:
|
|
5
|
-
# bash scripts/new-project.sh <project-name> [<function>]
|
|
6
|
-
#
|
|
7
|
-
# Arguments:
|
|
8
|
-
# project-name Free-form name. Normalized to kebab-case (lowercase,
|
|
9
|
-
# [a-z0-9-], non-alphanumeric runs collapsed to '-').
|
|
10
|
-
# Examples:
|
|
11
|
-
# "My Co" -> my-co
|
|
12
|
-
# "foo bar/baz" -> foo-bar-baz
|
|
13
|
-
# "Acme Corp 2" -> acme-corp-2
|
|
14
|
-
# function Optional. If provided, must be registered in
|
|
15
|
-
# .config/functions.yaml (gtm, product, design, ops, ...).
|
|
16
|
-
#
|
|
17
|
-
# Creates:
|
|
18
|
-
# projects/<slug>/
|
|
19
|
-
# guidelines/.gitkeep
|
|
20
|
-
# config/default.yaml (project-level config skeleton)
|
|
21
|
-
# state.md (frontmatter + 5-line stub)
|
|
22
|
-
#
|
|
23
|
-
# Exit codes:
|
|
24
|
-
# 0 success
|
|
25
|
-
# 1 usage / validation error
|
|
26
|
-
|
|
27
|
-
set -euo pipefail
|
|
28
|
-
|
|
29
|
-
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
30
|
-
# shellcheck disable=SC1091
|
|
31
|
-
source "$ROOT/scripts/lib/functions.sh"
|
|
32
|
-
|
|
33
|
-
usage() {
|
|
34
|
-
echo "Usage: $0 <project-name> [<function>]" >&2
|
|
35
|
-
echo " project-name Free-form; normalized to kebab-case" >&2
|
|
36
|
-
echo " function Optional; must be in .config/functions.yaml" >&2
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
|
|
40
|
-
usage
|
|
41
|
-
exit 1
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
RAW_NAME="$1"
|
|
45
|
-
FUNCTION="${2:-}"
|
|
46
|
-
|
|
47
|
-
normalize() {
|
|
48
|
-
# 1. lowercase
|
|
49
|
-
# 2. replace any run of non-alphanumeric chars with a single '-'
|
|
50
|
-
# 3. trim leading/trailing '-'
|
|
51
|
-
printf '%s' "$1" \
|
|
52
|
-
| tr '[:upper:]' '[:lower:]' \
|
|
53
|
-
| sed -E 's/[^a-z0-9]+/-/g; s/^-+//; s/-+$//'
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
SLUG="$(normalize "$RAW_NAME")"
|
|
57
|
-
|
|
58
|
-
if [ -z "$SLUG" ]; then
|
|
59
|
-
echo "ERROR: project name '$RAW_NAME' is empty after normalization" >&2
|
|
60
|
-
exit 1
|
|
61
|
-
fi
|
|
62
|
-
|
|
63
|
-
if ! [[ "$SLUG" =~ ^[a-z][a-z0-9-]*$ ]]; then
|
|
64
|
-
echo "ERROR: normalized slug '$SLUG' must start with a letter and contain only a-z, 0-9, '-'" >&2
|
|
65
|
-
exit 1
|
|
66
|
-
fi
|
|
67
|
-
|
|
68
|
-
if [ -n "$FUNCTION" ]; then
|
|
69
|
-
if ! is_valid_function "$FUNCTION"; then
|
|
70
|
-
echo "ERROR: function '$FUNCTION' is not registered in .config/functions.yaml" >&2
|
|
71
|
-
echo "Registered functions:" >&2
|
|
72
|
-
read_functions 2>/dev/null | sed 's/^/ - /' >&2 || echo " (registry empty or missing)" >&2
|
|
73
|
-
exit 1
|
|
74
|
-
fi
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
TARGET="$ROOT/projects/$SLUG"
|
|
78
|
-
|
|
79
|
-
if [ -e "$TARGET" ]; then
|
|
80
|
-
echo "ERROR: project '$SLUG' already exists at $TARGET" >&2
|
|
81
|
-
exit 1
|
|
82
|
-
fi
|
|
83
|
-
|
|
84
|
-
TIMESTAMP="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
85
|
-
|
|
86
|
-
mkdir -p "$TARGET/guidelines" "$TARGET/config" "$TARGET/assets"
|
|
87
|
-
touch "$TARGET/guidelines/.gitkeep" "$TARGET/assets/.gitkeep"
|
|
88
|
-
|
|
89
|
-
cat >"$TARGET/config/default.yaml" <<EOF
|
|
90
|
-
---
|
|
91
|
-
project: $SLUG
|
|
92
|
-
created: ${TIMESTAMP%T*}
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
# Project-level config for $SLUG.
|
|
96
|
-
# Cross-agent defaults. Agent-scoped instance config lives at:
|
|
97
|
-
# <function>/<agent>/projects/$SLUG/config/default.yaml
|
|
98
|
-
|
|
99
|
-
display_name: $SLUG
|
|
100
|
-
stage: early
|
|
101
|
-
motion: outbound
|
|
102
|
-
approval_channel: auto
|
|
103
|
-
EOF
|
|
104
|
-
|
|
105
|
-
cat >"$TARGET/state.md" <<EOF
|
|
106
|
-
---
|
|
107
|
-
updated: $TIMESTAMP
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
Last task: (none yet)
|
|
111
|
-
Active artifacts: (none)
|
|
112
|
-
Open questions: (none)
|
|
113
|
-
Next session: fill in guidelines/voice.md and at least one ICP
|
|
114
|
-
Notes: created via scripts/new-project.sh
|
|
115
|
-
EOF
|
|
116
|
-
|
|
117
|
-
echo "✓ Project '$SLUG' created at projects/$SLUG/"
|
|
118
|
-
echo ""
|
|
119
|
-
echo "Next steps:"
|
|
120
|
-
echo " 1. Fill projects/$SLUG/guidelines/voice.md (3 adjectives + tone)"
|
|
121
|
-
echo " 2. Add at least one ICP under projects/$SLUG/guidelines/icps/"
|
|
122
|
-
echo " 3. Edit projects/$SLUG/config/default.yaml — set display_name, stage, motion"
|
|
123
|
-
if [ -n "$FUNCTION" ]; then
|
|
124
|
-
echo " 4. Wire an agent instance via chief-of-staff: add-agent-to-project project=$SLUG function=$FUNCTION agent=<name>"
|
|
125
|
-
fi
|
|
File without changes
|
/package/templates/scaffold/{projects/_demo/guidelines → guidelines}/icps/_persona-template.md
RENAMED
|
File without changes
|