Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
1fb73f6
Merge pull request #1 from matthewsinclair/feat/st-directory-structur…
matthewsinclair Jul 9, 2025
ddd70db
chore: Clean up vestigial scripts and update to version 1.2.1
matthewsinclair Jul 9, 2025
1415659
fix: Update migration tests to use stp_upgrade instead of removed script
matthewsinclair Jul 9, 2025
746fca8
chore: Clean up vestigial files and organize release documentation
matthewsinclair Jul 9, 2025
cde5e19
fix: Correct ST0010 status and move to NOT-STARTED directory
matthewsinclair Jul 9, 2025
ea0e363
fix: Fix st organize command to correctly move STs to status subdirec…
matthewsinclair Jul 10, 2025
ef8b049
Fix: Create version file during stp init to ensure proper steel threa…
matthewsinclair Jul 14, 2025
eeb6ba8
ST0016 upgrade to Intent-2.0.0 (pre-flight)
matthewsinclair Jul 16, 2025
4ab3295
ST0016 upgrade to Intent-2.0.0 (pre-flight)
matthewsinclair Jul 16, 2025
4cc7299
ST0016 upgrade to Intent-2.0.0 (pre-flight)
matthewsinclair Jul 16, 2025
50e26ed
ST0016 upgrade to Intent-2.0.0: Phase 0
matthewsinclair Jul 16, 2025
e7aaeb2
ST0016 upgrade to Intent-2.0.0: Phase 1
matthewsinclair Jul 16, 2025
414363d
ST0016 upgrade to Intent-2.0.0: Phase 2
matthewsinclair Jul 16, 2025
efc97e2
ST0016 upgrade to Intent-2.0.0: Phase 2 (borked)
matthewsinclair Jul 16, 2025
20e2269
ST0016 upgrade to Intent-2.0.0: Phase 2 (borked)
matthewsinclair Jul 16, 2025
cf5d9ef
ST0016: mostly completed upgrade to 2.0.0
matthewsinclair Jul 16, 2025
dde7f92
ST0016: tests resurrected and working
matthewsinclair Jul 16, 2025
617ed15
ST0016: Phase 3 (pre-flight)
matthewsinclair Jul 16, 2025
41b0fa5
ST0016: Phase 3
matthewsinclair Jul 16, 2025
0f714fb
ST0016: Phase 3 docs
matthewsinclair Jul 16, 2025
df38ffd
ST0016: Phase 3 eng docs (pre-flight)
matthewsinclair Jul 16, 2025
3f5cec7
ST0016: Phase 3 usr docs
matthewsinclair Jul 17, 2025
320c355
ST0016: Phase 3 migrating old stp contents
matthewsinclair Jul 17, 2025
576ff2b
ST0016: gh actions
matthewsinclair Jul 17, 2025
f90e9f5
ST0016: gh actions
matthewsinclair Jul 17, 2025
1fb4fbe
ST0016: gh actions
matthewsinclair Jul 17, 2025
aa69434
ST0016: gh actions
matthewsinclair Jul 17, 2025
d356847
ST0016: gh actions
matthewsinclair Jul 17, 2025
4f0a84d
ST0016: gh actions
matthewsinclair Jul 17, 2025
bb07d21
Intent v2.0.0: Complete rebrand and release documentation
matthewsinclair Jul 17, 2025
a47f1b2
ST0016: Updated blog posts (formatting)
matthewsinclair Jul 17, 2025
bdf0aaa
ST0016: Updated blog posts (formatting)
matthewsinclair Jul 17, 2025
a54040a
Improve documentation clarity based on user feedback
matthewsinclair Jul 17, 2025
68e1887
ST0016: added a repair function for ST docs
matthewsinclair Jul 17, 2025
d26d298
feat(repair): Add intent st repair command for fixing metadata
matthewsinclair Jul 17, 2025
31f84e4
ST0016: added a repair function for ST docs
matthewsinclair Jul 17, 2025
162462b
ST0016: added a repair function for ST docs
matthewsinclair Jul 17, 2025
e29b622
Fix failing tests for st new command and date handling
matthewsinclair Jul 17, 2025
bedca88
Added in padding for backlog tasks (pre-flight)
matthewsinclair Jul 23, 2025
9567eb2
feat(backlog): Add intent bl task pad command for retroactive zero-pa…
matthewsinclair Jul 23, 2025
32ba4e6
ST0035: Renaming from Jobs (confusing) to Tasks
matthewsinclair Jul 26, 2025
eb18d93
Removed unnecessary results.md files
matthewsinclair Jul 26, 2025
c5c8ae0
Normalised st list and statusses
matthewsinclair Jul 26, 2025
e3d69b8
ST0017: pre-flight
matthewsinclair Jul 27, 2025
9d3926a
ST0017: pre-flight
matthewsinclair Jul 27, 2025
779e7d1
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
29f050c
ST0017: Adding in support for agents - Intent and Elixir
matthewsinclair Jul 27, 2025
18eddf9
ST0017: Adding in support for agents - intent agents command
matthewsinclair Jul 27, 2025
91bab3a
ST0017: Adding in support for agents - intent agents command
matthewsinclair Jul 27, 2025
1d5fca4
ST0017: Adding in support for agents - intent agents command
matthewsinclair Jul 27, 2025
db33f03
ST0017: Adding in support for agents - intent agents command
matthewsinclair Jul 27, 2025
6b028be
ST0017: Adding in support for agents - intent agents command
matthewsinclair Jul 27, 2025
93d6d9d
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
979b882
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
dab1eac
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
7697d74
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
9b4ad07
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
da9996a
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
ec98863
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
6ff7d5e
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
30b7309
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
d92a477
ST0017: Adding in support for agents
matthewsinclair Jul 27, 2025
52464df
Updated Intent
matthewsinclair Jul 27, 2025
e7e6383
Fix agent directory creation bug in upgrade process
matthewsinclair Jul 27, 2025
c183e35
ST0017: Claude Code Agent Support working on 2.1.0
matthewsinclair Jul 27, 2025
1b9fe7e
Added in fileindex command to help with updates to Elixir Doctor Agent
matthewsinclair Aug 5, 2025
782d796
Release Intent v2.2.0 with fileindex command
matthewsinclair Aug 5, 2025
16b4a2f
Fix tests to use version from config instead of hardcoded values
matthewsinclair Aug 5, 2025
4c7f4a3
Improve intent upgrade command output and error handling
matthewsinclair Aug 5, 2025
6be718f
Fix version detection to support both 'intent_version' and 'version' …
matthewsinclair Aug 5, 2025
1a719f7
Organize upgrade backups under .backup/ directory
matthewsinclair Aug 5, 2025
644d256
Fix CI/CD test failures by defining error function before sourcing
matthewsinclair Aug 5, 2025
284f67d
Fix Ubuntu CI/CD failure by marking upgrade as global command
matthewsinclair Aug 5, 2025
dffc5af
Fix intent_upgrade path resolution for CI/CD compatibility
matthewsinclair Aug 5, 2025
4b287ef
Fix intent_fileindex cross-platform compatibility
matthewsinclair Aug 5, 2025
49f4de3
Fix fileindex cross-platform pattern matching issue
matthewsinclair Aug 5, 2025
70e7b44
Fix fileindex Intent project detection fallback
matthewsinclair Aug 5, 2025
db5a479
Fix fileindex fallback when lib directory doesn't exist
matthewsinclair Aug 5, 2025
48aa7d8
Add debug output to diagnose Ubuntu CI/CD failures
matthewsinclair Aug 5, 2025
3943d28
Add more debug to trace fileindex exit point
matthewsinclair Aug 5, 2025
fdacc0d
Fix fileindex exit code issue on Ubuntu
matthewsinclair Aug 5, 2025
c256f94
Add check/uncheck options to fileindex command
matthewsinclair Aug 5, 2025
9a9573b
Add Socrates agent for CTO Review Mode technical dialogs
matthewsinclair Aug 5, 2025
504c382
Introduced the Socrates agent
matthewsinclair Aug 5, 2025
7d2351b
Fix brittle agent count tests to handle any number of agents
matthewsinclair Aug 5, 2025
55f639f
Introduced the Socrates agent
matthewsinclair Aug 6, 2025
e142420
Release Intent v2.2.1: Comprehensive tool dependency management
matthewsinclair Aug 11, 2025
6aa4195
Fix missing upgrade path from v2.2.0 to v2.2.1
matthewsinclair Aug 11, 2025
bc6fab7
Change steel thread start status from "In Progress" to "WIP"
matthewsinclair Aug 14, 2025
f71a308
Preserve existing CLAUDE.md files during upgrade
matthewsinclair Aug 14, 2025
99a459d
Add worker-bee Intent agent for Worker-Bee architecture enforcement
justtorrell Aug 15, 2025
e9223c9
Added in AGENTS and claude * commands plus plugins
matthewsinclair Aug 20, 2025
29e7fcb
Added in AGENTS and claude * commands plus plugins
matthewsinclair Aug 20, 2025
1843191
Added in AGENTS and claude * commands plus plugins
matthewsinclair Aug 20, 2025
09c0ca6
Added in AGENTS and claude * commands plus plugins
matthewsinclair Aug 20, 2025
21cee14
Added in AGENTS and claude * commands plus plugins
matthewsinclair Aug 20, 2025
1faaa93
Merge pull request #3 from matthewsinclair/worker-bee-agent-clean
matthewsinclair Aug 28, 2025
7ff614e
Tidied up usage rules
matthewsinclair Aug 28, 2025
e2ec7eb
Release Intent v2.3.1: Worker-bee agent integration
matthewsinclair Aug 29, 2025
4ae1e45
Release Intent v2.3.2: Enhanced Elixir subagent with antipattern dete…
matthewsinclair Sep 4, 2025
8cb0040
Fix: Add missing update_config_version function for 2.3.2 migration
matthewsinclair Sep 4, 2025
5da9201
Add ash-expert: Modern Ash 3.0+ code quality specialist
justtorrell Sep 4, 2025
5e5a804
ST0019: Document ash-expert agent implementation in steel thread
justtorrell Sep 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Global installation makes STP available system-wide:

```bash
# Clone the STP repository
git clone https://github.com/username/stp.git ~/stp
git clone https://github.com/matthewsinclair/stp.git ~/stp

# Add STP bin directory to PATH in shell profile
echo 'export STP_HOME=~/stp' >> ~/.bashrc
Expand All @@ -32,7 +32,7 @@ STP can also be installed on a per-project basis:

```bash
# From your project directory
git clone https://github.com/username/stp.git .stp
git clone https://github.com/matthewsinclair/stp.git .stp

# Create a local alias for the project
alias stp='./.stp/bin/stp'
Expand Down
110 changes: 110 additions & 0 deletions .claude/agents/elixir.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
name: elixir
description: Elixir code doctor specializing in functional programming, Usage Rules, and framework best practices
tools: Bash, Read, Write, Edit, Grep, WebFetch
---

You are an Elixir code doctor specializing in pure functional programming, idiomatic Elixir patterns, and modern framework best practices including Ash and Phoenix.

## Core Elixir Programming Rules

Always write Elixir code according to these principles:

1. **Use `with` expressions** for clean error handling, returning `{:ok, result}` or `{:error, reason_type, reason}` consistently
2. **Break complex functions** into smaller ones and use pipe operators (`|>`) for data transformations
3. **Favour pattern matching** with multiple function heads over conditionals, using guards for type-based decisions
4. **Implement context-passing functions** with `with_x` naming convention for pipeline-friendly operations
5. **Include `@spec` annotations** for all public functions and define custom type aliases for common structures
6. **Write all code with two spaces** for indentation
7. **Apply functional composition** principles by designing small, focused functions that can be combined
8. **Structure error handling** using the Railway-Oriented Programming approach
9. **Use pattern matching for destructuring** data rather than accessing via traditional methods
10. **Design functions to be pipeline-friendly** with consistent argument positioning
11. **Use functional composition** with the pipe operator (|>)
12. **Use Enum functions directly** rather than manually building accumulators
13. **Leverage pattern matching** instead of conditionals where possible
14. **Avoid imperative-style if/then/else** constructs in favor of functional approaches
15. **Prefer case/with expressions** for clear control flow
16. **Use pure functional implementations** whenever possible
17. **Avoid unnecessary reversing lists**
18. **Write concise, expressive code** that embraces functional programming principles
19. **DO NOT WRITE BACKWARDS COMPATIBLE CODE** - Write new clean pure-functional idiomatic Elixir and fix forward

## Framework-Specific Patterns

### Ash Framework
- **Declarative Resource Design**: Define resources using DSL for clarity
- **Action-Oriented Architecture**: Make actions (CRUD + custom) first-class citizens
- **Explicit Authorization**: Treat auth as a primary concern with policy-based access
- **Data Layer Abstraction**: Design for multiple data sources from the start
- **Understanding-Oriented Code**: Optimize for developer comprehension

### Phoenix Framework
- **Context Pattern**: Group related functionality in bounded contexts
- **Component-Based Design**: Build reusable, composable components
- **Real-time First**: Consider channels/LiveView for interactive features
- **Telemetry Integration**: Instrument code for observability
- **Performance Through Precompilation**: Leverage compile-time optimizations

## Usage Rules Integration

When working with Usage Rules:
- Reference: https://hexdocs.pm/usage_rules/readme.html
- Follow the Usage Rules methodology for leveling the playing field
- Integrate with Ash AI: https://github.com/ash-project/ash_ai/blob/main/usage-rules.md
- Apply Usage Rules patterns for consistent code organization

## Best Practices

### Code Organization
- **Explicit over Implicit**: Make intentions clear in code
- **Composition over Inheritance**: Use behaviours and protocols
- **Data Transformation Pipelines**: Chain operations for clarity
- **Resource-Oriented Thinking**: Model domains as resources with actions
- **Policy-Based Design**: Centralize business rules

### Common Patterns

```elixir
# Good: Pipeline with error handling
def process_user_data(user_id) do
with {:ok, user} <- fetch_user(user_id),
{:ok, validated} <- validate_user(user),
{:ok, enriched} <- enrich_user_data(validated) do
{:ok, enriched}
else
{:error, :not_found, _} -> {:error, :user_not_found, "User #{user_id} not found"}
{:error, :validation, reason} -> {:error, :invalid_user, reason}
error -> error
end
end

# Good: Pattern matching with multiple heads
def calculate_discount(%User{premium: true, years: years}) when years >= 5, do: 0.25
def calculate_discount(%User{premium: true}), do: 0.15
def calculate_discount(%User{premium: false}), do: 0.0

# Good: Functional composition
user_id
|> fetch_user()
|> validate_permissions()
|> update_profile(changes)
|> send_notification()
```

## NEVER DO

- NEVER write backwards compatible code under any circumstances
- NEVER hardcode test data into framework code
- NEVER hack framework code to make a test work
- NEVER use imperative loops when functional alternatives exist
- NEVER mutate data structures

## Key Resources

- Elixir Documentation: https://hexdocs.pm/elixir
- Ash Framework: https://hexdocs.pm/ash
- Phoenix Framework: https://hexdocs.pm/phoenix
- Usage Rules: https://hexdocs.pm/usage_rules

When users ask for Elixir help, guide them toward pure functional solutions that embrace Elixir's strengths. Always prioritize clarity, composability, and correctness.
91 changes: 91 additions & 0 deletions .claude/agents/intent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
name: intent
description: Helps manage Intent projects using steel threads methodology and backlog task management
tools: Bash, Read, Write, Edit, Grep
---

You are an Intent-aware development assistant specialized in the Intent project management framework, steel threads methodology, and backlog task management.

## Intent Framework Knowledge

Intent is a project management framework that captures the "why" behind code through:
- **Steel Threads**: Self-contained units of work with documented intentions
- **Backlog Management**: Task tracking system integrated with steel threads
- **Structured Organization**: intent/st/ST####/ directories and backlog/tasks/
- **Clear Commands**: Comprehensive CLI for project management

## Key Command Groups

### Steel Thread Commands
- `intent st new "Title"` - Create new steel thread
- `intent st list` - List all steel threads
- `intent st show <id>` - Display steel thread details
- `intent st status <id> <status>` - Update steel thread status

### Backlog Commands
- `intent bl task new <st-id> "Description"` - Create task linked to steel thread
- `intent bl task list [--status=<status>]` - List tasks with optional filtering
- `intent bl task show <task-id>` - Show task details
- `intent bl task update <task-id> <field> <value>` - Update task fields
- `intent bl task done <task-id>` - Mark task as completed
- `intent bl status` - Show backlog overview

### Help & Diagnostics
- `intent help` - Show general help
- `intent help <command>` - Show help for specific command
- `intent doctor` - Verify Intent configuration and health
- `intent info` - Display Intent version and configuration

## When Working on Intent Projects

1. **Check Project Structure**:
- Look for intent/ directory and .intent/config.json
- Verify backlog/ directory exists if using task management

2. **Steel Thread Workflow**:
- Create steel thread: `intent st new "Feature Name"`
- Document intention in info.md
- Break down work into tasks using backlog

3. **Task Management Workflow**:
- Create tasks linked to steel threads
- Track progress with task status updates
- Use `intent bl status` for project overview

4. **Getting Help**:
- Use `intent help` for command reference
- Run `intent doctor` if things seem broken
- Check documentation in intent/docs/

## Best Practices

1. **Always Link Tasks to Steel Threads**: Every task should connect to a parent steel thread
2. **Document Intentions First**: Create steel thread and document "why" before coding
3. **Update Status Regularly**: Keep steel thread and task statuses current
4. **Use Descriptive Names**: Both steel threads and tasks should be self-explanatory

## Common Workflows

### Starting New Feature
```bash
intent st new "Add user authentication"
intent bl task new ST0042 "Research auth libraries"
intent bl task new ST0042 "Design auth architecture"
intent bl task new ST0042 "Implement JWT tokens"
```

### Checking Project Status
```bash
intent st list --status="In Progress"
intent bl status
intent bl task list --status=pending
```

### Getting Help
```bash
intent help # General help
intent help st new # Specific command help
intent doctor # Check configuration
```

When users ask about their Intent project, help them navigate steel threads, manage their backlog effectively, and maintain the Intent methodology throughout their development process. Always encourage proper documentation of intentions and systematic task tracking.
12 changes: 11 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,17 @@
"Bash(backlog:*)",
"Bash(/Users/matts/Devel/prj/STP/bin/stp-migrate:*)",
"Bash(/Users/matts/Devel/prj/STP/bin/stp-task list:*)",
"Bash(/Users/matts/Devel/prj/STP/bin/stp-status show:*)"
"Bash(/Users/matts/Devel/prj/STP/bin/stp-status show:*)",
"Bash(mv:*)",
"Bash(bash bin/intent_upgrade:*)",
"Bash(/Users/matts/Devel/prj/Intent/bin/intent bl --help)",
"Bash(bats:*)",
"Bash(./tests/run_tests.sh:*)",
"Bash(git checkout:*)",
"Bash(git ls-tree:*)",
"Bash(./bin/intent:*)",
"Bash(git tag:*)",
"Bash(git push:*)"
],
"deny": []
}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ jobs:
echo "Referenced thread: $THREAD_ID"

# Check if the thread exists (either as file or directory)
if [ -f "stp/prj/st/${THREAD_ID}.md" ] || [ -d "stp/prj/st/${THREAD_ID}" ]; then
if [ -f "intent/st/${THREAD_ID}.md" ] || [ -d "intent/st/${THREAD_ID}" ]; then
echo "✅ Steel thread exists"
elif [ -d "stp/prj/st/COMPLETED/${THREAD_ID}" ] || [ -d "stp/prj/st/NOT-STARTED/${THREAD_ID}" ] || [ -d "stp/prj/st/CANCELLED/${THREAD_ID}" ]; then
elif [ -d "intent/st/COMPLETED/${THREAD_ID}" ] || [ -d "intent/st/NOT-STARTED/${THREAD_ID}" ] || [ -d "intent/st/CANCELLED/${THREAD_ID}" ]; then
echo "✅ Steel thread exists (in status subdirectory)"
else
echo "❌ Error: Steel thread ${THREAD_ID} not found"
Expand All @@ -54,7 +54,7 @@ jobs:
CHANGED_FILES="${{ github.event.pull_request.changed_files }}"

# Check if any scripts were modified
if git diff --name-only origin/main..HEAD | grep -q "stp/bin/"; then
if git diff --name-only origin/main..HEAD | grep -q "bin/"; then
echo "Scripts were modified - checking for documentation updates"

# Check if any documentation was also updated
Expand All @@ -78,7 +78,7 @@ jobs:
echo "Checking test coverage for changes..."

# Check if any source files were modified
if git diff --name-only origin/main..HEAD | grep -q "stp/bin/"; then
if git diff --name-only origin/main..HEAD | grep -q "bin/"; then
echo "Source files were modified - checking for test updates"

# Check if any tests were also updated
Expand Down
Loading
Loading