๐Ÿ‘ป

ghost.dev friction report

{{ repo_name }}
{{ scan_date }} ยท {{ docs_count }} docs scanned ยท {{ step_count }} steps extracted{% if project_type != 'unknown' %} ยท {{ project_type }}{% endif %}
{{ grade }}
Friction Score: {{ friction_score }} / 100 โ€” {{ friction_level }}
{{ total_duration_sec }}s
Total Duration
{% if time_to_build_min %}
{{ time_to_build_min }}m
Time to Build
{% endif %} {% if time_to_test_min %}
{{ time_to_test_min }}m
Time to Test
{% endif %}
{{ friction_count }}
Friction Events
{{ step_count }}
Setup Steps
{{ docs_count }}
Docs Scanned

๐Ÿ“„ Documentation Scanned

{% for doc in docs_found %} {{ doc }} {% endfor %}
{% if prerequisites or env_vars or implicit_reqs %}

โš™๏ธ Detected Requirements

{% if prerequisites %}
Prerequisites
{% for p in prerequisites %}{{ p }}{% endfor %}
{% endif %} {% if env_vars %}
Environment Variables
{% for v in env_vars %}{{ v }}{% endfor %}
{% endif %} {% if implicit_reqs %}
Implicit / Undocumented Requirements
{% for r in implicit_reqs %}{{ r }}{% endfor %}
{% endif %}
{% endif %} {% if steps %}

๐Ÿง  Extracted Setup Steps

{% for s in steps %}
{{ s.step_number }}
{{ s.action }}
๐Ÿ“Ž {{ s.source }} {{ (s.confidence * 100)|int }}% confidence {% if s.description %}{{ s.description }}{% endif %}
{% if s.assumptions %}
โš ๏ธ Assumes: {{ s.assumptions|join(', ') }}
{% endif %}
{% endfor %}
{% endif %} {% if categories %}

๐Ÿ“Š Friction Breakdown

{% for cat in categories %}
{{ cat.name }}
{{ cat.count }}
{% endfor %}
{% endif %} {% if cost_hours > 0 %}

๐Ÿ’ฐ Estimated Onboarding Cost

~{{ cost_hours }}h
Time Wasted
${{ "%.0f"|format(cost_dollars) }}
Per Developer
${{ "%.0f"|format(cost_dollars * 10) }}
10 Devs / Year
{% endif %} {% if has_execution %}

๐Ÿ“‹ Execution Timeline

{% for sr in step_results %}
{% if sr.status == 'success' %}โœ“{% elif sr.status == 'recovered' %}โŸณ{% elif sr.status == 'partial' %}!{% else %}โœ—{% endif %}
{{ sr.command }}
{{ sr.duration }}s exit {{ sr.exit_code }} {{ sr.status }}
{% if sr.friction %}
{{ sr.friction.severity }} {{ sr.friction.description }} {% if sr.friction.self_recovered %}
๐Ÿ”ง Recovered: {{ sr.friction.recovery_method }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %} {% if friction_events %}

โš ๏ธ Friction Events

{% for e in friction_events %}
{{ e.severity }} {{ e.description }} Step {{ e.step_number }}
Category
{{ e.category|replace('_',' ')|title }}
Command
{{ e.command }}
Doc Source
{{ e.doc_source }}
{% if e.doc_line %}
Doc Says
"{{ e.doc_line }}"
{% endif %} {% if e.reality %}
Reality
{{ e.reality }}
{% endif %}
Time Wasted
{{ e.time_wasted }}
{% if e.error_output %}
Error Output
{{ e.error_output }}
{% endif %} {% if e.suggested_fix %}
Suggested Fix
{{ e.suggested_fix }}
{% endif %} {% if e.self_recovered %}
Recovery
โœ… Self-recovered: {{ e.recovery_method }}
{% endif %}
{% endfor %}
{% endif %} {% if fix_suggestions %}

๐Ÿ“ Suggested Documentation Fixes

{% for fix in fix_suggestions %}
๐Ÿ“„ {{ fix.file_to_fix }}{% if fix.section %} โ†’ {{ fix.section }}{% endif %}
{% if fix.current_text %}โˆ’ {{ fix.current_text }}{% endif %} {% if fix.suggested_text %}+ {{ fix.suggested_text }}{% endif %}
{% if fix.reasoning %}
{{ fix.reasoning }}
{% endif %}
{% endfor %}
{% endif %}