add_style_decision
Record style decisions for consistent terminology, formatting, citations, tone, and other writing elements in markdown manuscripts.
Instructions
Record a style decision for consistency
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No | Path to manuscript directory (defaults to current directory) | |
| category | Yes | Style category | |
| canonical_choice | Yes | The chosen canonical form | |
| rationale | No | Why this choice was made | |
| examples | No | Example usages |
Implementation Reference
- src/tools/WriterToolHandlers.ts:442-463 (handler)Tool handler function that extracts arguments and delegates to WritersAid.addStyleDecisionprivate async addStyleDecision(args: Record<string, unknown>) { const category = args.category as | "terminology" | "formatting" | "citations" | "tone" | "headings" | "lists" | "code_blocks" | "quotes" | "other"; const canonicalChoice = args.canonical_choice as string; const rationale = args.rationale as string | undefined; const examples = args.examples as string[] | undefined; return this.writersAid.addStyleDecision({ category, canonicalChoice, rationale, examples, }); }
- Input schema and description for the add_style_decision toolname: "add_style_decision", description: "Record a style decision for consistency", inputSchema: { type: "object", properties: { project_path: { type: "string", description: "Path to manuscript directory (defaults to current directory)" }, category: { type: "string", enum: ["terminology", "formatting", "citations", "tone", "headings", "lists", "code_blocks", "quotes", "other"], description: "Style category", }, canonical_choice: { type: "string", description: "The chosen canonical form" }, rationale: { type: "string", description: "Why this choice was made" }, examples: { type: "array", items: { type: "string" }, description: "Example usages", }, }, required: ["category", "canonical_choice"], }, },
- src/tools/WriterToolHandlers.ts:80-81 (registration)Tool registration in the handleTool switch statementcase "add_style_decision": return this.addStyleDecision(args);
- Core implementation that persists the style decision to the databaseaddStyleDecision( decision: Omit<StyleDecision, "id" | "createdAt"> ): StyleDecision { const now = Date.now(); const newDecision: StyleDecision = { id: nanoid(), ...decision, createdAt: now, }; this.db .prepare( `INSERT INTO style_decisions (id, category, canonical_choice, alternatives_rejected, rationale, examples, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)` ) .run( newDecision.id, newDecision.category, newDecision.canonicalChoice, newDecision.alternativesRejected ? JSON.stringify(newDecision.alternativesRejected) : null, newDecision.rationale || null, newDecision.examples ? JSON.stringify(newDecision.examples) : null, newDecision.createdAt ); return newDecision; }
- src/WritersAid.ts:601-630 (helper)Delegation method in WritersAid that calls RequirementsManager and formats responseaddStyleDecision(options: { category: | "terminology" | "formatting" | "citations" | "tone" | "headings" | "lists" | "code_blocks" | "quotes" | "other"; canonicalChoice: string; rationale?: string; examples?: string[]; }) { const decision = this.requirementsManager.addStyleDecision({ category: options.category, canonicalChoice: options.canonicalChoice, rationale: options.rationale, examples: options.examples, }); return { id: decision.id, category: decision.category, canonicalChoice: decision.canonicalChoice, rationale: decision.rationale, examples: decision.examples, }; }