用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill mindtickle-cost-tuning命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Deploy a LangChain 1.0 / LangGraph 1.0 app to Cloud Run, Vercel, or LangServe correctly — with timeouts sized for chain length, cold-start mitigation, SSE anti-buffering headers, and Secret Manager over .env. Use when prepping a first production deploy, debugging a stream that hangs behind a proxy, or diagnosing p99 latency spikes. Trigger with "langchain deploy", "langchain cloud run", "langchain vercel python", "langchain langserve", or "langchain docker".
Build a correct LangGraph 1.0 ReAct agent with create_react_agent — typed tools, error propagation, recursion caps, and stop conditions that actually stop. Use when writing a first tool-calling agent, migrating from AgentExecutor or initialize_agent, or diagnosing an agent that loops on vague prompts. Trigger with "langgraph agent", "create_react_agent", "langgraph tool calling", "AgentExecutor migration", or "agent loop cost".
Build LangGraph 1.0 human-in-the-loop approval flows with interrupt_before / interrupt_after and Command(resume=...) — JSON-serializable state, clean resume semantics, and UI wiring for approval decisions. Use when adding an approval gate before an expensive tool call, wiring a Slack/web UI for agent approvals, or debugging a graph that crashes on interrupt. Trigger with "langgraph human in loop", "langgraph interrupt_before", "langgraph approval flow", "Command resume", "langgraph HITL".
正在显示 SKILL.md
| name | mindtickle-cost-tuning |
| description | Cost Tuning for MindTickle. Trigger: "mindtickle cost tuning". |
| allowed-tools | Read, Write, Edit, Grep |
| version | 1.7.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","mindtickle","sales"] |
| compatibility | Designed for Claude Code |
MindTickle pricing is per-seat with costs driven by course content volume, quiz assessment frequency, and coaching session recordings. Each training module creation, quiz grading event, and call recording analysis consumes platform resources proportional to content complexity and learner count. For sales organizations onboarding hundreds of reps with dozens of active courses, unchecked content duplication and excessive assessment polling accumulate unnecessary spend. Consolidating content, optimizing assessment cadence, and right-sizing seat allocation are the highest-impact cost levers.
| Component | Cost Driver | Optimization |
|---|---|---|
| Seat licenses | Per-learner/month pricing | Deprovision churned reps within 7 days; audit quarterly |
| Course content | Storage and delivery per training module | Deduplicate content across programs; archive outdated courses |
| Quiz assessments | Grading compute per quiz submission | Reduce retake frequency; batch grade submissions |
| Call recordings | Storage and AI analysis per coaching session | Set retention policies; analyze only flagged calls |
| API integrations | Sync events with CRM/HRIS systems | Batch sync; use webhooks instead of polling |
class MindTickleContentOptimizer {
private contentCache = new Map<string, { data: any; expiry: number }>();
private syncTimestamps = new Map<string, number>();
async getCourseContent(courseId: string, fetchFn: () => Promise<any>): Promise<any> {
const cached = this.contentCache.get(courseId);
if (cached && Date.now() < cached.expiry) return cached.data;
const data = await fetchFn();
// Course content changes rarely — cache for 24 hours
this.contentCache.set(courseId, { data, expiry: Date.now() + 86_400_000 });
return data;
}
async incrementalUserSync(users: any[]): <[]> {
lastSync = ..() || ;
changed = users.( u. > lastSync);
..(, .());
.(changed);
}
(: []): <[]> {
batches = .({ : .(records. / ) },
records.(i * , i * + ));
.(batches.( (, {
: , : .(b)
})));
}
}
class MindTickleCostTracker {
private daily = { assessments: 0, syncs: 0, recordings: 0 };
private budgets = { assessments: 2000, syncs: 500, recordings: 100 };
record(type: 'assessments' | 'syncs' | 'recordings'): void {
this.daily[type]++;
const pct = (this.daily[type] / this.budgets[type]) * 100;
if (pct > 80) {
console.warn(`MindTickle ${type} at ${pct.toFixed(0)}%: ${this.daily[type]}/${this.budgets[type]}`);
}
}
getReport(): Record<string, { used: number; budget: number }> {
.(
.(.).( [k, {
: .[k keyof .],
: .[k keyof .]
}])
);
}
}
| Issue | Cause | Fix |
|---|---|---|
| Seat costs exceeding budget | Churned reps not deprovisioned | Automate deprovisioning via HRIS webhook on termination |
| Content storage bloat | Duplicate modules across programs | Deduplicate with shared content library; link instead of copy |
| Assessment grading delays | Burst of quiz submissions after training event | Queue submissions; batch grade in groups of 50 |
| Recording analysis costs spiking | Analyzing every coaching call | Filter to flagged calls only; set weekly analysis cap |
| CRM sync failures | Full sync overwhelming API rate limits | Switch to incremental sync with change timestamps |
See mindtickle-performance-tuning.