Score, compare, and prioritize tasks before you build them β a consistent 4-dimension framework to replace gut-feel backlog decisions.
Repo:
git@github.com:ramsaptami/rubric-sdk.git. Package:@tessellate-studio/rubric-sdk. Commit changes to this repo, not to consuming projects.
npm install -g @tessellate-studio/rubric-sdkEach task is scored 0β3 on four dimensions:
| Dimension | What it measures |
|---|---|
| Impact | Value to users/business |
| Complexity | Effort and risk (inverse β lower cost scores higher) |
| Reusability | Cross-project potential |
| Strategic Fit | Alignment with vision/roadmap |
Total = sum (0β12). 9β12 Must Β· 6β8 Nice-to-have Β· 3β5 Low Β· 0β2 Reject.
rubric init [--profile startup|enterprise|research] # set scoring weights
rubric evaluate "Task description" --interactive # score one task
rubric compare --file tasks.json # rank multiple tasks
rubric report --format markdown --output backlog.md # export a prioritized listconst { RubricEngine } = require('@tessellate-studio/rubric-sdk');
const engine = new RubricEngine();
const result = await engine.evaluate('Implement user notifications',
{ impact: 4, complexity: 3, reusability: 3, strategic: 4 });
console.log(result.priority, result.weightedScore);For consumers that can't ask a human for scores (e.g. agents on a schedule), pass a task + context and get the full 4-axis score, band, and per-axis reasoning back. Scores are decided by transparent rule-based heuristics β see lib/evaluate-from-context.js.
const { evaluateFromContext } = require('@tessellate-studio/rubric-sdk');
const result = evaluateFromContext({
title: 'Set up email aliases on tessellate.co.in',
description: 'Privacy policy already lists privacy@ as the deletion address; emails bounce today.',
context: {
goals: ['Closed beta live'],
dependencies: { this_task_depends_on: [], this_task_unblocks: ['Reddit launch posts'] },
},
});
// β { impact, complexity, reusability, strategic, total, band, reasoning }Pairs with @tessellate-studio/code-directives for standards and scaffolding.