@pjmendonca/devflow 1.10.0 → 1.10.1

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.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Run adversarial (critical) code review with Opus
3
+ allowed-tools: Bash, Read, Glob, Grep
4
+ ---
5
+
6
+ Run the Devflow adversarial review for story: $ARGUMENTS
7
+
8
+ Execute: `devflow adversarial $ARGUMENTS`
9
+
10
+ This performs a critical, thorough review using the Opus model.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Invoke a specific Devflow agent
3
+ argument-hint: <agent-name>
4
+ ---
5
+
6
+ Invoke the Devflow agent: $ARGUMENTS
7
+
8
+ Execute: `devflow agent $ARGUMENTS`
9
+
10
+ Available agents: architect, ba, dev, maintainer, pm, reviewer, sm
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: Fix a bug
3
+ argument-hint: <bug-id>
4
+ ---
5
+
6
+ Run the Devflow bugfix automation for: $ARGUMENTS
7
+
8
+ Execute: `devflow bugfix $ARGUMENTS`
@@ -0,0 +1,30 @@
1
+ ---
2
+ description: Create or restore context checkpoints
3
+ argument-hint: [save|restore|list] [checkpoint-name]
4
+ ---
5
+
6
+ Manage Devflow context checkpoints: $ARGUMENTS
7
+
8
+ Execute: `devflow checkpoint $ARGUMENTS`
9
+
10
+ This manages context preservation checkpoints:
11
+ - Save current context state before risky operations
12
+ - Restore previous context if work is lost
13
+ - List available checkpoints for a story
14
+
15
+ Commands:
16
+ - `save <name>` - Save current context as checkpoint
17
+ - `restore <name>` - Restore from checkpoint
18
+ - `list` - List available checkpoints
19
+ - `auto` - Enable automatic checkpointing
20
+
21
+ Examples:
22
+ - `/checkpoint save before-refactor` - Save checkpoint
23
+ - `/checkpoint list` - Show available checkpoints
24
+ - `/checkpoint restore before-refactor` - Restore state
25
+
26
+ Automatic checkpointing occurs at:
27
+ - Before each agent phase starts
28
+ - When approaching context limits
29
+ - After major milestones
30
+
@@ -0,0 +1,30 @@
1
+ ---
2
+ description: Run collaborative story with mode selection
3
+ argument-hint: <story-key> [--swarm|--pair|--auto]
4
+ ---
5
+
6
+ Run Devflow collaboration for: $ARGUMENTS
7
+
8
+ Execute: `devflow collab $ARGUMENTS`
9
+
10
+ This is the unified collaboration CLI with all modes:
11
+
12
+ Modes:
13
+ - `--auto` - Auto-route to best agents (default)
14
+ - `--swarm` - Multi-agent debate/consensus
15
+ - `--pair` - DEV + REVIEWER pair programming
16
+ - `--sequential` - Traditional sequential pipeline
17
+
18
+ Options:
19
+ - `--agents AGENT1,AGENT2` - Specify agents (for swarm)
20
+ - `--max-iterations N` - Max iterations (default: 3)
21
+ - `--budget N` - Budget limit in USD
22
+ - `--memory` - Show shared memory
23
+ - `--query "Q"` - Query knowledge graph
24
+ - `--route-only` - Preview routing only
25
+
26
+ Examples:
27
+ - `/collab 3-5 --swarm` - Run swarm mode
28
+ - `/collab 3-5 --pair` - Run pair programming
29
+ - `/collab "fix auth bug" --auto` - Auto-route task
30
+
@@ -0,0 +1,27 @@
1
+ ---
2
+ description: View cost dashboard and spending analytics
3
+ argument-hint: [--period day|week|month]
4
+ ---
5
+
6
+ View Devflow cost dashboard: $ARGUMENTS
7
+
8
+ Execute: `devflow costs $ARGUMENTS`
9
+
10
+ This displays cost tracking and analytics:
11
+ - Total spend by model (Opus, Sonnet, Haiku)
12
+ - Cost breakdown by agent
13
+ - Cost breakdown by story/task
14
+ - Budget utilization tracking
15
+ - Cost trends over time
16
+
17
+ Options:
18
+ - `--period day` - Show today's costs
19
+ - `--period week` - Show this week's costs
20
+ - `--period month` - Show this month's costs
21
+ - `--export csv` - Export to CSV file
22
+
23
+ Examples:
24
+ - `/costs` - Show current cost dashboard
25
+ - `/costs --period week` - Show weekly breakdown
26
+ - `/costs --by-agent` - Group costs by agent
27
+
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: Run development phase for a story
3
+ argument-hint: <story-key>
4
+ ---
5
+
6
+ Run the Devflow development phase for story: $ARGUMENTS
7
+
8
+ Execute: `devflow develop $ARGUMENTS`
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: Run any Devflow command
3
+ argument-hint: <command> [args]
4
+ ---
5
+
6
+ Run: `devflow $ARGUMENTS`
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: View handoff summaries between agents
3
+ argument-hint: <story-key> [--from AGENT] [--to AGENT]
4
+ ---
5
+
6
+ View agent handoff summaries: $ARGUMENTS
7
+
8
+ Execute: `devflow handoff $ARGUMENTS`
9
+
10
+ This shows structured handoff information between agents:
11
+ - What was completed in the previous phase
12
+ - Decisions made and their rationale
13
+ - Blockers or warnings for the next agent
14
+ - Files modified with change summaries
15
+
16
+ Options:
17
+ - `--from AGENT` - Filter by source agent
18
+ - `--to AGENT` - Filter by destination agent
19
+ - `--latest` - Show only most recent handoff
20
+ - `--export` - Export handoffs to markdown
21
+
22
+ Examples:
23
+ - `/handoff 3-5` - Show all handoffs for story
24
+ - `/handoff 3-5 --from DEV --to REVIEWER` - Specific handoff
25
+ - `/handoff 3-5 --latest` - Most recent handoff
26
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ description: View or query shared agent memory
3
+ argument-hint: <story-key> [--query "question"]
4
+ ---
5
+
6
+ View shared memory for: $ARGUMENTS
7
+
8
+ Execute: `devflow memory $ARGUMENTS`
9
+
10
+ This displays the shared memory and knowledge graph for a story:
11
+ - Cross-agent shared memory pool
12
+ - Decision tracking with knowledge graph
13
+ - Learnings and context from all agents
14
+
15
+ Query Mode:
16
+ Use `--query` to ask questions about past decisions:
17
+ - `/memory 3-5 --query "What did ARCHITECT decide about auth?"`
18
+ - `/memory 3-5 --query "Why was the database schema changed?"`
19
+
20
+ Examples:
21
+ - `/memory 3-5` - Show all shared memory for story 3-5
22
+ - `/memory 3-5 --query "security decisions"` - Query specific topic
23
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Run pair programming mode (DEV + REVIEWER interleaved)
3
+ argument-hint: <story-key>
4
+ ---
5
+
6
+ Run Devflow pair programming for: $ARGUMENTS
7
+
8
+ Execute: `devflow pair $ARGUMENTS`
9
+
10
+ This runs DEV and REVIEWER in an interleaved pair programming mode:
11
+ - DEV implements code in small, reviewable chunks
12
+ - REVIEWER provides immediate feedback after each chunk
13
+ - DEV addresses issues before continuing to next chunk
14
+ - Results in higher quality code with fewer late-stage revisions
15
+
16
+ Benefits:
17
+ - Real-time feedback loops during implementation
18
+ - Issues caught early, not at final review
19
+ - Better knowledge sharing between agents
20
+ - Higher approval rates
21
+
22
+ Example:
23
+ - `/pair 3-5` - Run pair programming for story 3-5
24
+
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Personalize agent behavior with guided wizard
3
+ argument-hint: [agent-name]
4
+ ---
5
+
6
+ Run the agent personalization wizard to customize agent behavior.
7
+
8
+ Execute: `python3 tooling/scripts/personalize_agent.py $ARGUMENTS`
9
+
10
+ Available agents: dev, sm, ba, architect, pm, writer, maintainer, reviewer
11
+
12
+ Examples:
13
+ - `/personalize dev` - Customize the developer agent
14
+ - `/personalize` - Interactive agent selection
15
+ - `/personalize --list` - Show available templates
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: Run code review for a story
3
+ argument-hint: <story-key>
4
+ ---
5
+
6
+ Run the Devflow code review for story: $ARGUMENTS
7
+
8
+ Execute: `devflow review $ARGUMENTS`
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: Auto-route task to best agents
3
+ argument-hint: <task-description>
4
+ ---
5
+
6
+ Auto-route task to optimal agents: $ARGUMENTS
7
+
8
+ Execute: `devflow route $ARGUMENTS`
9
+
10
+ This intelligently selects the best agents based on task analysis:
11
+ - Analyzes task description for keywords and patterns
12
+ - Detects task type (bugfix, security, feature, refactor, etc.)
13
+ - Estimates complexity (trivial to critical)
14
+ - Routes to appropriate specialists
15
+
16
+ Task type detection examples:
17
+ - "fix login bug" -> MAINTAINER, DEV, REVIEWER
18
+ - "security vulnerability" -> SECURITY, ARCHITECT, REVIEWER
19
+ - "new user profile feature" -> BA, ARCHITECT, DEV, REVIEWER
20
+ - "refactor auth module" -> ARCHITECT, DEV, MAINTAINER
21
+
22
+ Examples:
23
+ - `/route fix authentication timeout` - Routes to bug specialists
24
+ - `/route add payment integration` - Routes to feature team
25
+ - `/route --route-only fix memory leak` - Preview routing only
26
+
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Run full story pipeline (context + dev + review)
3
+ argument-hint: <story-key>
4
+ ---
5
+
6
+ Run the Devflow story automation for story: $ARGUMENTS
7
+
8
+ Execute: `devflow story $ARGUMENTS`
9
+
10
+ This runs the full pipeline: context creation, development, and review.
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Run multi-agent swarm mode (debate/consensus)
3
+ argument-hint: <story-key> [--agents AGENT1,AGENT2,...]
4
+ ---
5
+
6
+ Run Devflow swarm mode for: $ARGUMENTS
7
+
8
+ Execute: `devflow swarm $ARGUMENTS`
9
+
10
+ This runs multi-agent collaboration where agents debate and iterate until consensus:
11
+ - Multiple agents analyze the task simultaneously
12
+ - Agents provide feedback on each other's work
13
+ - Issues are addressed through iterative refinement
14
+ - Continues until consensus or max iterations reached
15
+
16
+ Default agents: ARCHITECT, DEV, REVIEWER
17
+
18
+ Examples:
19
+ - `/swarm 3-5` - Run swarm with default agents
20
+ - `/swarm 3-5 --agents ARCHITECT,DEV,REVIEWER,SECURITY` - Custom agents
21
+ - `/swarm 3-5 --max-iter 5` - Increase max iterations
22
+
@@ -0,0 +1,241 @@
1
+ ---
2
+ name: github-cli
3
+ description: Execute GitHub CLI (gh) commands to manage repositories, pull requests, issues, workflows, and more. Use when working with GitHub operations like creating PRs, listing issues, managing branches, checking workflow runs, or any gh command automation.
4
+ ---
5
+
6
+ # GitHub CLI Automation
7
+
8
+ Use the GitHub CLI (gh) to automate GitHub repository operations efficiently.
9
+
10
+ ## Prerequisites
11
+
12
+ - GitHub CLI must be installed: `gh --version`
13
+ - Authentication required: `gh auth status`
14
+
15
+ ## Core Operations
16
+
17
+ ### Repository Management
18
+
19
+ ```bash
20
+ # View repository information
21
+ gh repo view
22
+
23
+ # Clone a repository
24
+ gh repo clone owner/repo
25
+
26
+ # Fork a repository
27
+ gh repo fork
28
+
29
+ # Create a new repository
30
+ gh repo create my-new-repo --public
31
+ ```
32
+
33
+ ### Pull Requests
34
+
35
+ ```bash
36
+ # Create a pull request
37
+ gh pr create --title "Feature: Add new functionality" --body "Description"
38
+
39
+ # List pull requests
40
+ gh pr list --state open
41
+ gh pr list --author @me
42
+
43
+ # View PR details
44
+ gh pr view 123
45
+
46
+ # Check out a PR locally
47
+ gh pr checkout 123
48
+
49
+ # Merge a pull request
50
+ gh pr merge 123 --squash
51
+
52
+ # Review PR status
53
+ gh pr status
54
+ ```
55
+
56
+ ### Issues
57
+
58
+ ```bash
59
+ # Create an issue
60
+ gh issue create --title "Bug: Something broke" --body "Description"
61
+
62
+ # List issues
63
+ gh issue list --state open
64
+ gh issue list --label bug --assignee @me
65
+
66
+ # View issue details
67
+ gh issue view 456
68
+
69
+ # Close an issue
70
+ gh issue close 456
71
+
72
+ # Reopen an issue
73
+ gh issue reopen 456
74
+ ```
75
+
76
+ ### Workflow Runs
77
+
78
+ ```bash
79
+ # List workflow runs
80
+ gh run list --limit 10
81
+
82
+ # View specific run
83
+ gh run view 12345
84
+
85
+ # Watch a running workflow
86
+ gh run watch
87
+
88
+ # Rerun a failed workflow
89
+ gh run rerun 12345
90
+
91
+ # List workflow run logs
92
+ gh run view 12345 --log
93
+ ```
94
+
95
+ ### Branches
96
+
97
+ ```bash
98
+ # List branches (via API)
99
+ gh api repos/:owner/:repo/branches
100
+
101
+ # Delete remote branch
102
+ gh api -X DELETE repos/:owner/:repo/git/refs/heads/branch-name
103
+ ```
104
+
105
+ ### Releases
106
+
107
+ ```bash
108
+ # Create a release
109
+ gh release create v1.0.0 --title "Release 1.0.0" --notes "Release notes"
110
+
111
+ # List releases
112
+ gh release list
113
+
114
+ # Download release assets
115
+ gh release download v1.0.0
116
+ ```
117
+
118
+ ### Gists
119
+
120
+ ```bash
121
+ # Create a gist
122
+ gh gist create file.txt --public
123
+
124
+ # List your gists
125
+ gh gist list
126
+
127
+ # View a gist
128
+ gh gist view <gist-id>
129
+ ```
130
+
131
+ ## Advanced Usage
132
+
133
+ ### JSON Output for Parsing
134
+
135
+ Many commands support `--json` for structured output:
136
+
137
+ ```bash
138
+ # Get PR data as JSON
139
+ gh pr list --json number,title,state,headRefName
140
+
141
+ # Get issue data as JSON
142
+ gh issue list --json number,title,labels,state
143
+
144
+ # Parse with jq
145
+ gh pr list --json number,title | jq '.[] | select(.title | contains("bug"))'
146
+ ```
147
+
148
+ ### API Access
149
+
150
+ Direct API access for advanced operations:
151
+
152
+ ```bash
153
+ # Generic API call
154
+ gh api repos/:owner/:repo/branches
155
+
156
+ # With pagination
157
+ gh api repos/:owner/:repo/pulls --paginate
158
+
159
+ # POST request
160
+ gh api repos/:owner/:repo/issues -f title="New Issue" -f body="Description"
161
+ ```
162
+
163
+ ### Checking for Stale Branches
164
+
165
+ ```bash
166
+ # List merged branches
167
+ git branch -r --merged main | grep -v 'main\|HEAD'
168
+
169
+ # Get PR information
170
+ gh pr list --state merged --json headRefName,mergedAt
171
+ ```
172
+
173
+ ## Best Practices
174
+
175
+ 1. **Always check auth status first**: Run `gh auth status` before operations
176
+ 2. **Use structured output**: Prefer `--json` when parsing results programmatically
177
+ 3. **Check command success**: Verify exit codes and output before proceeding
178
+ 4. **Use help**: Run `gh <command> --help` for detailed syntax
179
+ 5. **Batch operations**: Combine commands with shell scripting for bulk operations
180
+
181
+ ## Common Workflows
182
+
183
+ ### Creating and Merging a PR
184
+
185
+ ```bash
186
+ # Push your changes
187
+ git push origin feature-branch
188
+
189
+ # Create PR
190
+ gh pr create --title "Feature: Description" --body "Detailed description"
191
+
192
+ # Wait for CI/checks
193
+ gh pr checks
194
+
195
+ # Merge when ready
196
+ gh pr merge --squash
197
+ ```
198
+
199
+ ### Cleaning Up Merged Branches
200
+
201
+ ```bash
202
+ # List merged PRs
203
+ gh pr list --state merged --json headRefName --limit 20
204
+
205
+ # Delete remote branches (carefully!)
206
+ # gh api -X DELETE repos/:owner/:repo/git/refs/heads/branch-name
207
+ ```
208
+
209
+ ### Release Management
210
+
211
+ ```bash
212
+ # Tag and create release
213
+ git tag v1.0.0
214
+ git push --tags
215
+ gh release create v1.0.0 --generate-notes
216
+
217
+ # Or with custom notes
218
+ gh release create v1.0.0 --title "Version 1.0.0" --notes "Release notes here"
219
+ ```
220
+
221
+ ## Error Handling
222
+
223
+ ```bash
224
+ # Check if gh is installed
225
+ if ! command -v gh &> /dev/null; then
226
+ echo "GitHub CLI not installed"
227
+ exit 1
228
+ fi
229
+
230
+ # Check authentication
231
+ if ! gh auth status &> /dev/null; then
232
+ echo "Not authenticated. Run: gh auth login"
233
+ exit 1
234
+ fi
235
+ ```
236
+
237
+ ## Reference
238
+
239
+ - Official docs: https://cli.github.com/manual/
240
+ - All commands: `gh help`
241
+ - Command-specific help: `gh <command> --help`
package/CHANGELOG.md CHANGED
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.10.1] - 2025-12-24
9
+
10
+ ### Fixed
11
+ - **Claude Code Skills Distribution** - Include .claude directory in npm package and installation
12
+ - Added .claude/ to package.json files array for npm distribution
13
+ - Added .claude/ to create-devflow.js itemsToCopy for project initialization
14
+ - Ensures 16 custom commands and 1 skill are immediately available after installation
15
+ - Commands include: story, devflow, adversarial, agent, bugfix, checkpoint, collab, costs, develop, handoff, memory, pair, personalize, review, route, swarm
16
+ - Skills include: github-cli for GitHub operations
17
+
8
18
  ## [1.10.0] - 2025-12-23
9
19
 
10
20
  ### Added
package/README.md CHANGED
@@ -44,7 +44,7 @@ A production-ready, portable workflow automation system that uses Claude Code CL
44
44
 
45
45
  ### Installation
46
46
 
47
- **Option 1: Quick Start (Recommended - Creates Devflow folder)**
47
+ **Option 1: Quick Start**
48
48
 
49
49
  This creates a new "Devflow" directory with all necessary files:
50
50
 
@@ -77,90 +77,6 @@ npx devflow-validate
77
77
  npx devflow-init
78
78
  ```
79
79
 
80
- See [NPM Installation Guide](docs/NPM_INSTALLATION.md) for detailed instructions and troubleshooting.
81
-
82
- **Option 3: pip (Python Ecosystem)**
83
-
84
- ```bash
85
- # Clone the repository
86
- git clone https://github.com/Pedro-Jose-da-Rocha-Mendonca/Devflow.git
87
- cd Devflow
88
-
89
- # Install via pip
90
- pip install .
91
-
92
- # Verify installation
93
- devflow-validate
94
- ```
95
-
96
- **Option 4: Manual Installation (macOS/Linux)**
97
-
98
- Clone and Setup:
99
-
100
- ```bash
101
- # Clone this repository
102
- git clone https://github.com/Pedro-Jose-da-Rocha-Mendonca/Devflow.git
103
- cd Devflow
104
-
105
- # Copy to your project
106
- cp -r tooling /path/to/your/project/
107
-
108
- # Run setup wizard
109
- cd /path/to/your/project/tooling/scripts
110
- ./init-project-workflow.sh
111
- ```
112
-
113
- Direct Copy:
114
-
115
- ```bash
116
- # Download latest release
117
- curl -L https://github.com/Pedro-Jose-da-Rocha-Mendonca/Devflow/archive/main.tar.gz | tar xz
118
-
119
- # Move to your project
120
- mv Devflow-main/tooling /path/to/your/project/
121
-
122
- # Manual config
123
- cd /path/to/your/project/tooling/.automation
124
- cp config.sh.template config.sh
125
- vim config.sh
126
- ```
127
-
128
- **Option 5: Manual Installation (Windows)**
129
-
130
- Clone and Setup (Recommended):
131
-
132
- ```powershell
133
- # Clone this repository
134
- git clone https://github.com/Pedro-Jose-da-Rocha-Mendonca/Devflow.git
135
- cd Devflow
136
-
137
- # Copy to your project
138
- Copy-Item -Recurse tooling C:\path\to\your\project\
139
-
140
- # Set execution policy (first time only, run as Admin)
141
- Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
142
-
143
- # Run setup wizard
144
- cd C:\path\to\your\project\tooling\scripts
145
- .\init-project-workflow.ps1
146
- ```
147
-
148
- Direct Copy:
149
-
150
- ```powershell
151
- # Download latest release
152
- Invoke-WebRequest -Uri "https://github.com/Pedro-Jose-da-Rocha-Mendonca/Devflow/archive/main.zip" -OutFile main.zip
153
- Expand-Archive main.zip -DestinationPath .
154
-
155
- # Move to your project
156
- Move-Item Devflow-main\tooling C:\path\to\your\project\
157
-
158
- # Manual config
159
- cd C:\path\to\your\project\tooling\.automation
160
- Copy-Item config.ps1.template config.ps1
161
- notepad config.ps1
162
- ```
163
-
164
80
  ### Agent Personas
165
81
 
166
82
  | Agent | Model | Cost | Use Case |
@@ -616,7 +532,7 @@ Free to use in commercial and personal projects.
616
532
 
617
533
 
618
534
  <!-- VERSION_START - Auto-updated by update_version.py -->
619
- **Version**: 1.10.0
535
+ **Version**: 1.10.1
620
536
  **Status**: Production Ready
621
- **Last Updated**: 2025-12-23
537
+ **Last Updated**: 2025-12-24
622
538
  <!-- VERSION_END -->
@@ -67,6 +67,7 @@ const itemsToCopy = [
67
67
  { type: 'dir', name: 'tooling' },
68
68
  { type: 'dir', name: 'bin' },
69
69
  { type: 'dir', name: 'lib' },
70
+ { type: 'dir', name: '.claude' },
70
71
  { type: 'file', name: 'LICENSE' },
71
72
  { type: 'file', name: 'README.md' },
72
73
  { type: 'file', name: 'CHANGELOG.md' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pjmendonca/devflow",
3
- "version": "1.10.0",
3
+ "version": "1.10.1",
4
4
  "description": "Development workflow automation with Claude Code - agent-based development system with cost tracking",
5
5
  "keywords": [
6
6
  "devflow",
@@ -44,6 +44,7 @@
44
44
  "bin/",
45
45
  "lib/",
46
46
  "tooling/",
47
+ ".claude/",
47
48
  "LICENSE",
48
49
  "README.md",
49
50
  "CHANGELOG.md"
@@ -18,7 +18,7 @@ Usage:
18
18
  from lib.agent_router import AgentRouter
19
19
  """
20
20
 
21
- __version__ = "1.10.0"
21
+ __version__ = "1.10.1"
22
22
 
23
23
  # Lazy imports to avoid circular dependencies
24
24
  __all__ = [