Skill content
Main instructions and any bundled files for this skill.
Agent Documentation
This document describes each AI agent in the Film Agent system.
Overview
The system uses 6 specialized AI agents that work together autonomously:
- DirectorAgent - Orchestrates all other agents
- ScreenwriterAgent - Generates film scripts
- CinematographerAgent - Plans visual elements
- EditorAgent - Assembles final video
- SoundDesignerAgent - Creates audio elements
- VFXAgent - Applies visual effects
DirectorAgent
Class: src.agents.director_agent.DirectorAgent
The Director Agent is the orchestrator of the entire film production pipeline.
Methods
__init__(self)
Initializes all agent dependencies.
interpret_concept(self, prompt: str) -> Dict
Transforms user concept into a cohesive creative vision.
Parameters:
prompt(str): User's film concept/idea
Returns:
{
"vision": "Creative vision statement",
"style": "cinematic",
"genre": "drama",
"target_duration": "5 minutes"
}
coordinate_agents(self, vision: Dict) -> Dict
Orchestrates the workflow of all agents.
Parameters:
vision(Dict): Creative vision frominterpret_concept()
Returns:
{
"script": {...},
"shots": [...],
"audio": {...},
"effects": [...]
}
review_output(self, output: Dict) -> Dict
Evaluates and approves final output from other agents.
Parameters:
output(Dict): Combined output from all agents
Returns:
{
"approved": True,
"feedback": "Output meets quality standards",
"revisions_needed": []
}
make_artistic_decisions(self, context: Dict) -> Dict
Makes high-level artistic decisions autonomously.
Parameters:
context(Dict): Current production context
Returns:
{
"color_grading": "warm",
"pacing": "moderate",
"mood": "neutral"
}
ScreenwriterAgent
Class: src.agents.screenwriter_agent.ScreenwriterAgent
The Screenwriter Agent writes complete scripts with dialogue and scene descriptions.
Methods
__init__(self)
Initializes the screenwriter agent.
generate(self, prompt: str, genre: str = "drama", length: str = "short") -> Dict
Generates a complete film script from a user prompt.
Parameters:
prompt(str): User's story conceptgenre(str): Film genre (drama, comedy, sci-fi, etc.)length(str): Script length (short, medium, feature)
Returns:
{
"title": "Untitled Film",
"scenes": [],
"characters": [],
"dialogue": [],
"structure": {
"act1": "Setup",
"act2": "Confrontation",
"act3": "Resolution"
}
}
develop_character(self, name: str, traits: List[str]) -> Dict
Creates a detailed character profile.
Parameters:
name(str): Character nametraits(List[str]): List of character traits
Returns:
{
"name": "Character Name",
"backstory": "Character history",
"motivations": ["goal1", "goal2"],
"arc": "transformation"
}
structure_narrative(self, events: List[Dict]) -> Dict
Organizes story events into a three-act structure.
Parameters:
events(List[Dict]): List of story events
Returns:
{
"act1": {"setup": [...], "inciting_incident": [...]},
"act2": {"rising_action": [...], "midpoint": [...]},
"act3": {"climax": [...], "resolution": [...]}
}
write_dialogue(self, character: str, context: str) -> str
Generates dialogue for a character in a specific context.
Parameters:
character(str): Character namecontext(str): Scene context
Returns:
"[Character]: Generated dialogue"
revise(self, script: Dict, feedback: str) -> Dict
Improves script based on director feedback.
Parameters:
script(Dict): Original scriptfeedback(str): Director's feedback notes
Returns:
{...} # Revised script
CinematographerAgent
Class: src.agents.cinematographer_agent.CinematographerAgent
The Cinematographer Agent plans camera angles, movements, and compositions.
Methods
__init__(self)
Initializes the cinematographer agent.
plan_shots(self, script: Dict) -> List[Dict]
Creates a shot list from the script.
Parameters:
script(Dict): Script from ScreenwriterAgent
Returns:
[
{
"shot_type": "wide",
"camera_movement": "static",
"composition": "establishing",
"duration": 5.0
}
]
design_lighting(self, scene: Dict) -> Dict
Plans lighting setup for a scene.
Parameters:
scene(Dict): Scene description
Returns:
{
"key_light": {"position": "45 degrees", "intensity": "100%"},
"fill_light": {"position": "opposite", "intensity": "50%"},
"back_light": {"position": "behind subject", "intensity": "70%"},
"mood": "dramatic"
}
compose_frame(self, shot_type: str, subject: str) -> Dict
Designs camera composition for a shot.
Parameters:
shot_type(str): Type of shotsubject(str): Main subject in frame
Returns:
{
"rule_of_thirds": {"x": 1/3, "y": 1/2},
"headroom": "moderate",
"look_room": "left",
"depth": "shallow"
}
create_shot_list(self, script: Dict) -> Dict
Generates detailed shot breakdown.
Parameters:
script(Dict): Full script
Returns:
{
"scenes": [...],
"total_shots": 0,
"est_duration": 0
}
ensure_continuity(self, shots: List[Dict]) -> bool
Verifies visual continuity across shots.
Parameters:
shots(List[Dict]): List of all shots
Returns:
True # or False if issues found
EditorAgent
Class: src.agents.editor_agent.EditorAgent
The Editor Agent assembles scenes into cohesive narrative.
Methods
__init__(self)
Initializes the editor agent.
assemble(self, scenes: List[Dict], audio: Dict) -> Dict
Combines scenes and audio into final assembly.
Parameters:
scenes(List[Dict]): List of scene dictionariesaudio(Dict): Audio track dictionary
Returns:
{
"timeline": [...],
"duration": 0.0,
"cuts": [...]
}
determine_pacing(self, script: Dict) -> Dict
Sets optimal timing and rhythm for scenes.
Parameters:
script(Dict): Script with scene descriptions
Returns:
{
"tempo": "moderate",
"timing": {...},
"rhythm": "steady"
}
apply_transitions(self, timeline: Dict) -> Dict
Adds transitions between scenes.
Parameters:
timeline(Dict): Current edit timeline
Returns:
{...} # Updated timeline
make_cut_decisions(self, shots: List[Dict]) -> List[Dict]
Determines optimal cut points between shots.
Parameters:
shots(List[Dict]): List of available shots
Returns:
[...] # Selected cuts
export_final(self, assembly: Dict, format: str = "mp4") -> Dict
Renders and exports the final video.
Parameters:
assembly(Dict): Final edit assemblyformat(str): Output format (mp4, mov, etc.)
Returns:
{
"file_path": "output/video.mp4",
"format": "mp4",
"resolution": "1920x1080"
}
SoundDesignerAgent
Class: src.agents.sound_designer_agent.SoundDesignerAgent
The Sound Designer Agent creates immersive audio experiences.
Methods
__init__(self)
Initializes the sound designer agent.
design_music(self, script: Dict) -> Dict
Selects or generates background music for the film.
Parameters:
script(Dict): Script with emotional beats
Returns:
{
"score": [...],
"mood": "neutral",
"tempo": 120,
"duration": 0.0
}
create_soundscape(self, scene: Dict) -> Dict
Builds ambient audio environment for a scene.
Parameters:
scene(Dict): Scene description
Returns:
{
"ambient": [...],
"foley": [...],
"spatial": "stereo"
}
mix_audio(self, tracks: List[Dict]) -> Dict
Balances and mixes multiple audio tracks.
Parameters:
tracks(List[Dict]): List of audio tracks
Returns:
{
"levels": {...},
"master": {"volume": 0.8},
"dynamics": {"compression": True}
}
sync_to_video(self, audio: Dict, video: Dict) -> Dict
Synchronizes audio with visual beats and cuts.
Parameters:
audio(Dict): Audio trackvideo(Dict): Video with cut points
Returns:
{...} # Synced audio
generate_voiceover(self, script: Dict, voice: str = "default") -> Dict
Creates voice narration for the film.
Parameters:
script(Dict): Script text for voiceovervoice(str): Voice style/name
Returns:
{
"audio": None,
"timing": [...],
"subtitles": [...]
}
VFXAgent
Class: src.agents.vfx_agent.VFXAgent
The VFX Agent applies visual effects and color grading.
Methods
__init__(self)
Initializes the VFX agent.
identify_enhancements(self, shots: List[Dict]) -> List[Dict]
Finds opportunities for visual enhancement.
Parameters:
shots(List[Dict]): List of shots to analyze
Returns:
[
{
"shot": 0,
"suggestion": "color_grading",
"priority": "high"
}
]
apply_color_grading(self, shot: Dict) -> Dict
Adjusts color and contrast for visual consistency.
Parameters:
shot(Dict): Shot to grade
Returns:
{
"lut": "cinematic",
"adjustments": {
"contrast": 1.1,
"saturation": 1.0,
"temperature": 0
},
"mood": "warm"
}
integrate_cgi(self, shot: Dict) -> Dict
Adds CGI elements to a shot.
Parameters:
shot(Dict): Target shot
Returns:
{
"elements": [...],
"lighting": {...},
"blending": "normal"
}
ensure_quality(self, video: Dict) -> Dict
Technical quality check for final output.
Parameters:
video(Dict): Rendered video
Returns:
{
"issues": [],
"passed": True,
"recommendations": []
}
render_effects(self, shots: List[Dict]) -> List[Dict]
Applies all VFX to shots.
Parameters:
shots(List[Dict]): List of shots
Returns:
[...] # Shots with effects
Parameters:
scene(Dict): Scene description
Returns:
{
"ambient": [...],
"foley": [...],
"spatial": "stereo"
}
mix_audio(self, tracks: List[Dict]) -> Dict
Balances and mixes multiple audio tracks.
Parameters:
tracks(List[Dict]): List of audio tracks
Returns:
{
"levels": {...},
"master": {"volume": 0.8},
"dynamics": {"compression": True}
}
sync_to_video(self, audio: Dict, video: Dict) -> Dict
Synchronizes audio with visual beats and cuts.
Parameters:
-
audio(Dict): Audio track -
video(Dict): Video with cut points
Returns:
{...} # Synced audio
generate_voiceover(self, script: Dict, voice: str = "default") -> Dict
Creates voice narration for the film.
Parameters:
-
script(Dict): Script text for voiceover -
voice(str): Voice style/name
Returns:
{
"audio": None,
"timing": [...],
"subtitles": [...]
}
VFXAgent
Class: src.agents.vfx_agent.VFXAgent
The VFX Agent applies visual effects and color grading.
Methods
__init__(self)
Initializes the VFX agent.
identify_enhancements(self, shots: List[Dict]) -> List[Dict]
Finds opportunities for visual enhancement.
Parameters:
shots(List[Dict]): List of shots to analyze
Returns:
[
{
"shot": 0,
"suggestion": "color_grading",
"priority": "high"
}
]
apply_color_grading(self, shot: Dict) -> Dict
Adjusts color and contrast for visual consistency.
Parameters:
shot(Dict): Shot to grade
Returns:
{
"lut": "cinematic",
"adjustments": {
"contrast": 1.1,
"saturation": 1.0,
"temperature": 0
},
"mood": "warm"
}
integrate_cgi(self, shot: Dict) -> Dict
Adds CGI elements to a shot.
Parameters:
shot(Dict): Target shot
Returns:
{
"elements": [...],
"lighting": {...},
"blending": "normal"
}
ensure_quality(self, video: Dict) -> Dict
Technical quality check for final output.
Parameters:
video(Dict): Rendered video
Returns:
{
"issues": [],
"passed": True,
"recommendations": []
}
render_effects(self, shots: List[Dict]) -> List[Dict]
Applies all VFX to shots.
Parameters:
shots(List[Dict]): List of shots
Returns:
[...] # Shots with effects
Initializes the VFX agent.
identify_enhancements(self, shots: List[Dict]) -> List[Dict]
Finds opportunities for visual enhancement.
Parameters:
shots(List[Dict]): List of shots to analyze
Returns:
[
{
"shot": 0,
"suggestion": "color_grading",
"priority": "high"
}
]
apply_color_grading(self, shot: Dict) -> Dict
Adjusts color and contrast for visual consistency.
Parameters:
shot(Dict): Shot to grade
Returns:
{
"lut": "cinematic",
"adjustments": {
"contrast": 1.1,
"saturation": 1.0,
"temperature": 0
},
"mood": "warm"
}
integrate_cgi(self, shot: Dict) -> Dict
Adds CGI elements to a shot.
Parameters:
shot(Dict): Target shot
Returns:
{
"elements": [...],
"lighting": {...},
"blending": "normal"
}
ensure_quality(self, video: Dict) -> Dict
Technical quality check for final output.
Parameters:
video(Dict): Rendered video
Returns:
{
"issues": [],
"passed": True,
"recommendations": []
}
render_effects(self, shots: List[Dict]) -> List[Dict]
Applies all VFX to shots.
Parameters:
shots(List[Dict]): List of shots
Returns:
[...] # Shots with effects
Related Skills
Frontend Typescript Linting.mdc
TypeScript and ESLint rules that MUST be followed when creating, modifying, or reviewing any file under apps/frontend/, including .ts, .tsx, .js, and .jsx files. Also apply when discussing frontend li...
2. Apply Deepthink Protocol (reason about dependencies
risks