@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.
Files changed (75) hide show
  1. package/README.md +77 -215
  2. package/agents/lesson-drafter.md +3 -8
  3. package/agents/pattern-detector.md +0 -1
  4. package/bin/roster.js +7233 -1197
  5. package/data/plan-ceilings.yaml +57 -0
  6. package/package.json +8 -3
  7. package/skills/chief-of-staff/SKILL.md +199 -59
  8. package/skills/dreamer/SKILL.md +8 -7
  9. package/skills/roster-orchestrator/SKILL.md +53 -25
  10. package/templates/CLAUDE.project.template.md +1 -1
  11. package/templates/CONTEXT.template.md +2 -2
  12. package/templates/gitignore-defaults.txt +2 -0
  13. package/templates/hooks/banner.sh +47 -0
  14. package/templates/scaffold/chief-of-staff/README.md +16 -24
  15. package/templates/scaffold/chief-of-staff/agent.md +22 -32
  16. package/templates/scaffold/chief-of-staff/plans/audit-agent.yaml +4 -4
  17. package/templates/scaffold/chief-of-staff/plans/audit-repo.yaml +5 -4
  18. package/templates/scaffold/chief-of-staff/plans/create-agent.yaml +5 -34
  19. package/templates/scaffold/config/project.yaml.template +10 -0
  20. package/templates/scaffold/conventions.md +188 -173
  21. package/templates/scaffold/dreamer/README.md +2 -2
  22. package/templates/scaffold/dreamer/agent.md +0 -1
  23. package/templates/scaffold/dreamer/plans/nightly-reflection.yaml +23 -37
  24. package/templates/scaffold/dreamer/subagents/lesson-drafter.md +2 -7
  25. package/templates/scaffold/{projects/_demo/guidelines → guidelines}/asset-links.md +4 -0
  26. package/templates/scaffold/{projects/_demo/guidelines → guidelines}/brand-book.md +4 -0
  27. package/templates/scaffold/{projects/_demo/guidelines → guidelines}/messaging.md +4 -0
  28. package/templates/scaffold/{projects/_demo/guidelines → guidelines}/voice.md +4 -0
  29. package/templates/scaffold/logs/cron/.gitkeep +1 -0
  30. package/templates/scaffold/ops/EXPERT.md +5 -5
  31. package/templates/scaffold/scripts/audit-agent.sh +326 -0
  32. package/templates/scaffold/scripts/audit-repo.sh +218 -0
  33. package/templates/scaffold/scripts/create-function.sh +267 -0
  34. package/templates/scaffold/scripts/lib/README.md +6 -1
  35. package/templates/scaffold/scripts/lib/bindings-prompt.sh +53 -0
  36. package/templates/scaffold/scripts/lib/functions.sh +17 -5
  37. package/templates/scaffold/scripts/new-agent.sh +416 -0
  38. package/templates/scaffold/scripts/rename-agent.sh +91 -0
  39. package/templates/scaffold/scripts/save-state.sh +32 -0
  40. package/agents/critic.md +0 -74
  41. package/agents/enricher.md +0 -56
  42. package/agents/promotion-arbiter.md +0 -71
  43. package/agents/prospector.md +0 -51
  44. package/agents/writer.md +0 -58
  45. package/skills/sdr/SKILL.md +0 -147
  46. package/templates/scaffold/chief-of-staff/plans/add-agent-to-project.yaml +0 -45
  47. package/templates/scaffold/chief-of-staff/plans/archive-project.yaml +0 -51
  48. package/templates/scaffold/chief-of-staff/plans/audit-project.yaml +0 -34
  49. package/templates/scaffold/chief-of-staff/plans/create-project.yaml +0 -65
  50. package/templates/scaffold/chief-of-staff/plans/remove-agent-from-project.yaml +0 -50
  51. package/templates/scaffold/chief-of-staff/plans/rename-project.yaml +0 -62
  52. package/templates/scaffold/chief-of-staff/plans/unarchive-project.yaml +0 -41
  53. package/templates/scaffold/dreamer/subagents/promotion-arbiter.md +0 -64
  54. package/templates/scaffold/gtm/sdr/.claude/settings.json +0 -3
  55. package/templates/scaffold/gtm/sdr/.mcp.json +0 -21
  56. package/templates/scaffold/gtm/sdr/README.md +0 -46
  57. package/templates/scaffold/gtm/sdr/agent.md +0 -136
  58. package/templates/scaffold/gtm/sdr/plans/cold-outreach.yaml +0 -92
  59. package/templates/scaffold/gtm/sdr/projects/_demo/asset-references.md +0 -7
  60. package/templates/scaffold/gtm/sdr/projects/_demo/config/default.yaml +0 -69
  61. package/templates/scaffold/gtm/sdr/projects/_demo/log/feedback/.gitkeep +0 -0
  62. package/templates/scaffold/gtm/sdr/projects/_demo/log/runs/.gitkeep +0 -0
  63. package/templates/scaffold/gtm/sdr/projects/_demo/playbook/.gitkeep +0 -0
  64. package/templates/scaffold/gtm/sdr/subagents/critic.md +0 -67
  65. package/templates/scaffold/gtm/sdr/subagents/enricher.md +0 -49
  66. package/templates/scaffold/gtm/sdr/subagents/prospector.md +0 -44
  67. package/templates/scaffold/gtm/sdr/subagents/writer.md +0 -51
  68. package/templates/scaffold/projects/_demo/CLAUDE.md +0 -35
  69. package/templates/scaffold/projects/_demo/README.md +0 -16
  70. package/templates/scaffold/projects/_demo/assets/.gitkeep +0 -0
  71. package/templates/scaffold/projects/_demo/config/default.yaml +0 -28
  72. package/templates/scaffold/projects/_demo/state.md +0 -11
  73. package/templates/scaffold/scripts/new-project.sh +0 -125
  74. /package/templates/scaffold/gtm/{sdr/playbook/.gitkeep → .gitkeep} +0 -0
  75. /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