Help us improve
Share bugs, ideas, or general feedback.
From popkit-core
Creates PopKit Cloud account via API, generates API key, saves config to ~/.claude/popkit/cloud-config.json, and tests connection. Invoke via /popkit:cloud signup for semantic features.
npx claudepluginhub jrc1883/popkit-ai --plugin popkit-coreHow this skill is triggered — by the user, by Claude, or both
Slash command
/popkit-core:pop-cloud-signupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create a new PopKit Cloud account and obtain an API key for enhanced semantic intelligence features.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Breaks plans, specs, or PRDs into thin vertical-slice issues on the project issue tracker using tracer bullets. Useful for converting high-level work into grabbable implementation tickets.
Share bugs, ideas, or general feedback.
Create a new PopKit Cloud account and obtain an API key for enhanced semantic intelligence features.
/popkit:cloud signupUser provides (via AskUserQuestion):
Optional flags:
--skip-test: Skip connection testing after signupfrom pathlib import Path
import json
import os
config_path = Path.home() / ".claude/popkit/cloud-config.json"
# Check config file
if config_path.exists():
with open(config_path) as f:
config = json.load(f)
email = config.get("email")
print(f"⚠️ Existing cloud config found for {email}")
# Use AskUserQuestion to confirm
# Options:
# 1. "Continue with new signup" (will overwrite existing)
# 2. "Login to existing account" (invoke pop-cloud-login skill)
# 3. "Cancel"
# Check environment variable
if os.environ.get("POPKIT_API_KEY"):
print("⚠️ POPKIT_API_KEY environment variable is already set")
Email Collection:
Use AskUserQuestion tool with custom input for email address.
Password Collection:
Use AskUserQuestion tool with custom input for password (minimum 8 characters).
Validation:
import requests
url = "https://api.thehouseofdeals.com/v1/auth/signup"
payload = {
"email": email,
"password": password
}
try:
response = requests.post(url, json=payload, timeout=10)
if response.status_code == 201:
# Success
data = response.json()
api_key = data["api_key"]
user_id = data["user_id"]
tier = data.get("tier", "free")
print(f"✅ Account created successfully")
print(f"User ID: {user_id}")
print(f"Tier: {tier}")
elif response.status_code == 409:
# Email already registered
print("❌ Signup failed: Email already registered")
print("\nTry logging in instead: /popkit:cloud login")
return
# Other error handling...
except requests.exceptions.Timeout:
print("❌ Signup failed: Request timed out")
print("Check your internet connection and try again")
return
from pathlib import Path
import json
import os
config_dir = Path.home() / ".claude/popkit"
config_dir.mkdir(parents=True, exist_ok=True)
config_path = config_dir / "cloud-config.json"
config = {
"api_key": api_key,
"email": email,
"user_id": user_id,
"tier": tier,
"created_at": "2025-12-26T00:00:00Z" # Use current timestamp
}
with open(config_path, "w") as f:
json.dump(config, f, indent=2)
# Set restrictive permissions (Unix/Mac only)
try:
os.chmod(config_path, 0o600)
print(f"🔒 API key saved securely: {config_path}")
except Exception:
# Windows doesn't support chmod the same way
print(f"✅ API key saved: {config_path}")
import requests
try:
headers = {"Authorization": f"Bearer {api_key}"}
response = requests.get(
"https://api.thehouseofdeals.com/v1/health",
headers=headers,
timeout=5
)
if response.status_code == 200:
latency_ms = response.elapsed.total_seconds() * 1000
print(f"✅ Cloud connection verified ({latency_ms:.0f}ms)")
else:
print(f"⚠️ Warning: Could not verify connection (HTTP {response.status_code})")
except Exception as e:
print(f"⚠️ Warning: Could not test connection: {e}")
print("Your account was created successfully")
✅ PopKit Cloud Account Created
**Email:** user@example.com
**API Key:** **\*\***def456 (saved securely)
**Tier:** Free (100 requests/day)
## Quick Start
### Option 1: Use config file (recommended)
Your API key is already saved in `~/.claude/popkit/cloud-config.json`.
PopKit will automatically use it for cloud enhancements.
**Verify connection:**
```bash
/popkit:cloud status
```
For maximum portability, export the API key:
# Add to ~/.bashrc or ~/.zshrc
export POPKIT_API_KEY="pk_live_abc123def456..."
✅ All development commands and skills work without API key
✅ Semantic agent routing - Better agent selection via embeddings ✅ Community pattern learning - Learn from other developers' solutions ✅ Cloud knowledge base - Access shared documentation and patterns ✅ Cross-project insights - Recommendations based on similar projects
Free Tier:
Need more? Upgrade at: /popkit:upgrade
Verify connection:
/popkit:cloud status
Test semantic routing:
/popkit:next # Uses embeddings to recommend next action
View account info:
/popkit:account
~/.claude/popkit/cloud-config.jsonTo disconnect:
/popkit:cloud logout
## Error Handling
### Email Already Registered (409)
```markdown
❌ Signup Failed
**Error:** Email already registered
Try logging in instead:
```bash
/popkit:cloud login
### Invalid Email/Password (400)
```markdown
❌ Signup Failed
**Error:** Invalid email or password
Requirements:
- Email: Must be valid format (contains @ and domain)
- Password: Minimum 8 characters
Please try again with valid credentials.
❌ Signup Failed
**Error:** Request timed out
Please check:
1. Your internet connection
2. Firewall/proxy settings
3. Cloud status: https://status.thehouseofdeals.com
Try again in a moment.
pop-cloud-login - Login to existing accountpop-cloud-status - Check connection statuspop-cloud-logout - Disconnect from cloudAPI Key Storage:
~/.claude/popkit/cloud-config.jsonPassword Handling:
Best Practices:
/popkit:cloud logout when switching accounts