api-requirements-guidance.jsβ’4.7 kB
#!/usr/bin/env node
/**
* API Requirements Guidance Test
* Verifies that Claude receives comprehensive API requirements upfront
*/
import { createClaudeGuidedComposer } from '../dist/claude-guided-composer.js';
async function testAPIRequirementsGuidance() {
console.error('π¨ Testing API Requirements Guidance (Prevention-First Approach)\n');
const composer = createClaudeGuidedComposer();
// Test guidance for photosynthesis lesson (the scenario that failed)
const guidance = await composer.provideLessonGuidance(
"Crie uma aula de biologia sobre fotossΓntese",
"CiΓͺncias",
"6ΒΊ ano"
);
console.error('π Testing API Requirements Section');
// Verify API requirements are provided
if (guidance.apiRequirements) {
console.error('β
API requirements section present');
// Check critical field mappings
const quizRequirements = guidance.apiRequirements.widgetAPIRequirements['quiz-1'];
if (quizRequirements && quizRequirements.criticalNote) {
console.error('β
Quiz field requirements specified:');
console.error(` Note: ${quizRequirements.criticalNote}`);
}
const listRequirements = guidance.apiRequirements.widgetAPIRequirements['list-1'];
if (listRequirements && listRequirements.criticalNote) {
console.error('β
List field requirements specified:');
console.error(` Note: ${listRequirements.criticalNote}`);
}
const hotspotsRequirements = guidance.apiRequirements.widgetAPIRequirements['hotspots-1'];
if (hotspotsRequirements && hotspotsRequirements.criticalNote) {
console.error('β
Hotspots field requirements specified:');
console.error(` Note: ${hotspotsRequirements.criticalNote}`);
}
// Check common mistakes section
if (guidance.apiRequirements.commonMistakes) {
console.error('β
Common mistakes guide provided');
const fieldErrors = guidance.apiRequirements.commonMistakes.fieldNameErrors;
console.error(` Quiz mistake prevention: ${fieldErrors.quiz?.correct}`);
console.error(` List mistake prevention: ${fieldErrors.list?.correct}`);
}
// Check critical reminders
if (guidance.apiRequirements.criticalReminders) {
console.error('β
Critical reminders provided:');
guidance.apiRequirements.criticalReminders.slice(0, 3).forEach((reminder, i) => {
console.error(` ${i + 1}. ${reminder}`);
});
}
} else {
console.error('β API requirements section missing');
}
console.error('\nπ Testing Instructions Priority');
// Check that instructions prioritize API requirements
if (guidance.instructions.includes('FOLLOW API REQUIREMENTS FIRST')) {
console.error('β
Instructions prioritize API requirements');
} else {
console.error('β Instructions do not emphasize API requirements');
}
if (guidance.instructions.includes('Study the apiRequirements section')) {
console.error('β
Instructions direct Claude to study API requirements first');
} else {
console.error('β Instructions do not direct to API requirements section');
}
console.error('\nπ Testing Specific Field Guidance');
const expectedGuidance = [
'Use "options" array with "correct_option"',
'Use "items" array (NOT "list_items")',
'Use numeric coordinates like 50, 30',
'Use "flashcards_items"',
'Minimum 20 characters'
];
expectedGuidance.forEach(expected => {
if (guidance.instructions.includes(expected)) {
console.error(`β
Includes guidance: "${expected}"`);
} else {
console.error(`β Missing guidance: "${expected}"`);
}
});
console.error('\nπ― Prevention-First Approach Results:');
console.error(' β
API requirements provided upfront before content creation');
console.error(' β
Exact field names and formats specified');
console.error(' β
Common mistakes explicitly prevented');
console.error(' β
Critical reminders highlighted');
console.error(' β
Instructions prioritize API understanding');
console.error('\nπ Expected Claude Behavior Improvement:');
console.error(' 1. Claude studies API requirements FIRST');
console.error(' 2. Claude generates content with correct field names');
console.error(' 3. validate_lesson_data β Success (no field name errors)');
console.error(' 4. format_for_composer β Success (minimal transformation needed)');
console.error(' 5. save_composition_api β Success (no 500 API errors)');
console.error('\nβ
Prevention-first approach should eliminate most API errors at source');
}
testAPIRequirementsGuidance().catch(console.error);