Team knowledge sharing and collaboration
Manages team knowledge sharing, collaboration, and member administration.
/plugin marketplace add ialameh/sift-coder/plugin install ialameh-siftcoder@ialameh/sift-codercreate|invite|members|knowledge|share|approve|leaveShare knowledge across your team. Patterns, gotchas, and decisions learned by one member automatically benefit everyone.
/siftcoder:team create <name> - Create a new team
/siftcoder:team invite <email> - Invite member to team
/siftcoder:team members - List team members
/siftcoder:team leave - Leave current team
/siftcoder:team knowledge - Browse team knowledge base
/siftcoder:team share <id> - Share local knowledge to team
/siftcoder:team approve <id> - Approve pending knowledge (admin)
/siftcoder:team reject <id> - Reject pending knowledge (admin)
/siftcoder:team pending - View pending contributions (admin)
/siftcoder:team stats - View team knowledge statistics
/siftcoder:team search <query> - Search team knowledge
$ARGUMENTS - Subcommand and any arguments/siftcoder:config cloud configurecreate <name>Create a new team:
Creating new team: <name>
Team slug (URL-safe identifier): [auto-generated-from-name]
Description (optional):
Settings:
Require approval for shared knowledge? (yes/no): [yes]
Allow member invites? (yes/no): [yes]
curl -X POST "$SERVER_URL/api/v1/orgs" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "<name>",
"slug": "<slug>",
"settings": {
"require_approval": true,
"allow_member_invites": true
}
}'
Team created successfully!
Name: <name>
Slug: <slug>
ID: <team-id>
Your role: Owner
Next steps:
/siftcoder:team invite <email> - Add team members
/siftcoder:team share <id> - Share knowledge
invite <email>Invite a member to the team:
curl -X POST "$SERVER_URL/api/v1/orgs/<slug>/members/invite" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "<email>", "role": "member"}'
Invitation sent to <email>
They will receive an email with instructions to join.
Pending invitations expire in 7 days.
View pending: /siftcoder:team members --pending
membersList team members:
curl "$SERVER_URL/api/v1/orgs/<slug>/members" \
-H "Authorization: Bearer $API_KEY"
Team: <team-name>
Members (5):
Role Name Email Joined
---------------------------------------------------------------
Owner John Smith john@example.com Jan 1, 2026
Admin Jane Doe jane@example.com Jan 5, 2026
Member Bob Wilson bob@example.com Jan 10, 2026
Member Alice Brown alice@example.com Jan 12, 2026
Member Charlie Davis charlie@example.com Jan 15, 2026
Pending Invitations: 2
- newuser@example.com (expires Jan 22, 2026)
- another@example.com (expires Jan 23, 2026)
knowledgeBrowse team knowledge base:
curl "$SERVER_URL/api/v1/team/<slug>/knowledge?status=approved&limit=20" \
-H "Authorization: Bearer $API_KEY"
Team Knowledge Base
Total: 45 entries (32 patterns, 8 gotchas, 5 decisions)
Recent Contributions:
[Pattern] Error Retry with Exponential Backoff
By: Jane Doe | Jan 15, 2026 | Views: 23
Tags: error-handling, resilience
[Gotcha] SQLite Concurrent Write Lock
By: Bob Wilson | Jan 14, 2026 | Views: 18
Tags: sqlite, database, concurrency
[Decision] Use UUID v7 for IDs
By: John Smith | Jan 12, 2026 | Views: 31
Tags: database, architecture
[Pattern] Rust Feature Flags for Optional Deps
By: Alice Brown | Jan 10, 2026 | Views: 15
Tags: rust, cargo, dependencies
Commands:
/siftcoder:team knowledge --type pattern - Filter by type
/siftcoder:team search <query> - Search knowledge
/siftcoder:team share <id> - Share your knowledge
share <id>Share local knowledge to team:
Read local knowledge from .claude/siftcoder-state/knowledge/
If <id> provided, find that specific entry
If no <id>, show list of local knowledge:
Local Knowledge (not yet shared):
ID Type Title
-----------------------------------------------
pat-001 Pattern Retry with Backoff
pat-002 Pattern Config Loading
got-001 Gotcha SQLite Lock Issue
dec-001 Decision UUID v7 Choice
Share which entry? [pat-001/pat-002/got-001/dec-001/all]
On selection, make API call:
curl -X POST "$SERVER_URL/api/v1/team/<slug>/knowledge" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entry_type": "pattern",
"title": "Retry with Backoff",
"description": "...",
"code_example": "...",
"tags": ["error-handling"],
"contribution_context": "Discovered while building sync feature"
}'
Display result:
Knowledge shared successfully!
Title: Retry with Backoff
Type: Pattern
Status: Pending Approval
Your contribution will be reviewed by a team admin.
Track status: /siftcoder:team pending
Or if auto-approved (user is admin):
Knowledge shared and auto-approved!
Title: Retry with Backoff
Type: Pattern
Status: Approved
Now visible to all team members.
approve <id>Approve pending knowledge (admin only):
Get pending entry details:
curl "$SERVER_URL/api/v1/team/<slug>/knowledge/<id>" \
-H "Authorization: Bearer $API_KEY"
Display for review:
Pending Knowledge Review
Type: Pattern
Title: Retry with Exponential Backoff
Contributed by: Jane Doe (jane@example.com)
Submitted: Jan 15, 2026
Description:
Implement exponential backoff for network retries to avoid
overwhelming servers during outages.
Code Example:
```rust
async fn retry_with_backoff<F, T, E>(f: F, max_retries: u32) -> Result<T, E>
where
F: Fn() -> Future<Output = Result<T, E>>,
{
let mut delay = Duration::from_millis(100);
for attempt in 0..max_retries {
match f().await {
Ok(result) => return Ok(result),
Err(e) if attempt < max_retries - 1 => {
sleep(delay).await;
delay *= 2;
}
Err(e) => return Err(e),
}
}
}
Tags: error-handling, resilience, async
Actions: [A]pprove [R]eject [S]kip
On approve:
curl -X POST "$SERVER_URL/api/v1/team/<slug>/knowledge/<id>/review" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "approved", "review_notes": "Great pattern!"}'
Display confirmation:
Knowledge approved!
Now visible to all team members.
Contributor has been notified.
reject <id>Reject pending knowledge (admin only):
curl -X POST "$SERVER_URL/api/v1/team/<slug>/knowledge/<id>/review" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "rejected", "review_notes": "<reason>"}'
Knowledge rejected.
Reason: <reason>
Contributor has been notified.
pendingView pending contributions (admin only):
curl "$SERVER_URL/api/v1/team/<slug>/knowledge/pending" \
-H "Authorization: Bearer $API_KEY"
Pending Contributions (3)
ID Type Title By Date
---------------------------------------------------------------------------
pend-001 Pattern Retry with Backoff Jane Doe Jan 15
pend-002 Gotcha SQLite Lock Issue Bob Wilson Jan 14
pend-003 Decision UUID v7 for IDs Alice Brown Jan 13
Review with:
/siftcoder:team approve <id>
/siftcoder:team reject <id>
statsView team knowledge statistics:
curl "$SERVER_URL/api/v1/team/<slug>/knowledge/stats" \
-H "Authorization: Bearer $API_KEY"
Team Knowledge Statistics
Total Entries: 45
- Patterns: 32
- Gotchas: 8
- Decisions: 5
This Month:
- New contributions: 12
- Approvals: 10
- Rejections: 2
Top Contributors:
1. Jane Doe - 15 contributions
2. Bob Wilson - 12 contributions
3. Alice Brown - 8 contributions
Most Viewed:
1. Error Retry Pattern (45 views)
2. SQLite Lock Gotcha (38 views)
3. UUID v7 Decision (31 views)
Most Searched:
1. "error handling" (23 searches)
2. "database" (18 searches)
3. "async" (15 searches)
search <query>Search team knowledge:
curl "$SERVER_URL/api/v1/team/<slug>/knowledge/search?q=<query>" \
-H "Authorization: Bearer $API_KEY"
Search Results for "error handling"
Found 5 entries:
[Pattern] Error Retry with Exponential Backoff
Score: 0.95 | By: Jane Doe | Views: 23
"...implement exponential backoff for network retries..."
[Gotcha] Silent Error Swallowing in Async
Score: 0.87 | By: Bob Wilson | Views: 15
"...async functions may silently swallow errors..."
[Pattern] Structured Error Types
Score: 0.82 | By: Alice Brown | Views: 19
"...use thiserror for deriving error types..."
View full entry: /siftcoder:team knowledge <id>
leaveLeave current team:
curl -X DELETE "$SERVER_URL/api/v1/orgs/<slug>/members/<user_id>" \
-H "Authorization: Bearer $API_KEY"
You have left the team: <team-name>
Your contributions remain in the team knowledge base.
Your local knowledge is unaffected.
To join another team:
/siftcoder:team join <invite-link>
Team settings stored in ~/.config/siftcoder/team.toml:
[team]
current = "my-team-slug"
org_id = "uuid-here"
[team.settings]
auto_share = false
share_patterns = true
share_gotchas = true
share_decisions = true
EFFECTIVE TEAM KNOWLEDGE SHARING
Building the knowledge base:
- Share patterns as you discover them
- Document gotchas when you hit them
- Record decisions with context
Quality contributions:
- Include code examples
- Add relevant tags
- Explain the "why" not just "what"
As an admin:
- Review pending regularly
- Provide feedback on rejections
- Thank contributors
Searching effectively:
- Use specific terms
- Try tag searches: /siftcoder:team search --tag rust
- Check "most viewed" for common issues
Building team culture:
- Encourage all members to share
- Celebrate good contributions
- Keep knowledge up-to-date