AC Spec Parser Parse and validate project specifications for autonomous coding. Purpose Parses YAML/JSON/Markdown specifications into structured data for feature generation and planning. Quick Start Supported Formats - YAML : , - Structured specifications - JSON : - Machine-readable specs - Markdown : - Human-readable specs with sections Specification Schema Workflow 1. Load : Read spec file from disk 2. Parse : Convert to structured data 3. Validate : Check required fields and schema 4. Normalize : Standardize format for downstream use 5. Export : Output to feature analyzer Validation Rules…

, content, re.MULTILINE)\n if title_match:\n data[\"project\"][\"name\"] = title_match.group(1).strip()\n\n # Extract requirements from lists\n req_pattern = r'[-*]\\s+(?:\\[([A-Z]+-\\d+)\\])?\\s*(.+?)(?:\\n|$)'\n for match in re.finditer(req_pattern, content):\n req_id = match.group(1) or f\"REQ-{len(data['requirements'])+1:03d}\"\n data[\"requirements\"].append({\n \"id\": req_id,\n \"description\": match.group(2).strip(),\n \"priority\": \"medium\",\n \"acceptance_criteria\": []\n })\n\n # Extract technology from code blocks or sections\n tech_section = re.search(\n r'##\\s*Tech(?:nology)?.*?\\n(.*?)(?=\\n##|\\Z)',\n content,\n re.IGNORECASE | re.DOTALL\n )\n if tech_section:\n tech_text = tech_section.group(1)\n if \"python\" in tech_text.lower():\n data[\"technology\"][\"language\"] = \"python\"\n elif \"typescript\" in tech_text.lower():\n data[\"technology\"][\"language\"] = \"typescript\"\n\n return data\n\n def _basic_yaml_parse(self, content: str) -> Dict[str, Any]:\n \"\"\"Basic YAML parsing without PyYAML dependency.\"\"\"\n data = {}\n current_key = None\n current_list = None\n\n for line in content.split('\\n'):\n stripped = line.strip()\n if not stripped or stripped.startswith('#'):\n continue\n\n # Key-value pair\n if ':' in stripped and not stripped.startswith('-'):\n key, _, value = stripped.partition(':')\n key = key.strip()\n value = value.strip()\n\n if value:\n data[key] = value\n else:\n data[key] = {}\n current_key = key\n current_list = None\n\n # List item\n elif stripped.startswith('-'):\n item = stripped[1:].strip()\n if current_key and current_list is None:\n data[current_key] = []\n current_list = data[current_key]\n if current_list is not None:\n current_list.append(item)\n\n return data\n\n def _resolve_path(self, spec_path: str) -> Path:\n \"\"\"Resolve spec path to absolute path.\"\"\"\n path = Path(spec_path)\n if path.is_absolute():\n return path\n return self.project_dir / path\n\n\n# Convenience function\nasync def parse_spec(project_dir: Path, spec_path: str) -> ProjectSpec:\n \"\"\"Parse a specification file.\"\"\"\n parser = SpecParser(project_dir)\n return await parser.parse(spec_path)\n","content_type":"text/x-python; charset=utf-8","language":"python","size":11222,"content_sha256":"4954ccfc37a9c04be0f397c10ac3983451f0039935c47a7a188aca83436cfecf"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"AC Spec Parser","type":"text"}]},{"type":"paragraph","content":[{"text":"Parse and validate project specifications for autonomous coding.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Purpose","type":"text"}]},{"type":"paragraph","content":[{"text":"Parses YAML/JSON/Markdown specifications into structured data for feature generation and planning.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Quick Start","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"python"},"content":[{"text":"from scripts.spec_parser import SpecParser\n\nparser = SpecParser(project_dir)\nspec = await parser.parse(\"spec.yaml\")\nprint(spec.project_name)\nprint(spec.requirements)","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Supported Formats","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"YAML","type":"text","marks":[{"type":"strong"}]},{"text":": ","type":"text"},{"text":".yaml","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":".yml","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Structured specifications","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"JSON","type":"text","marks":[{"type":"strong"}]},{"text":": ","type":"text"},{"text":".json","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Machine-readable specs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Markdown","type":"text","marks":[{"type":"strong"}]},{"text":": ","type":"text"},{"text":".md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Human-readable specs with sections","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Specification Schema","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"yaml"},"content":[{"text":"project:\n name: \"Project Name\"\n description: \"What the project does\"\n type: \"web-app|api|cli|library\"\n\nrequirements:\n functional:\n - id: \"REQ-001\"\n description: \"User can login\"\n priority: \"high|medium|low\"\n acceptance_criteria:\n - \"Valid credentials grant access\"\n - \"Invalid credentials show error\"\n\n non_functional:\n - id: \"NFR-001\"\n description: \"Response under 200ms\"\n category: \"performance|security|usability\"\n\ntechnology:\n language: \"python|typescript|go\"\n framework: \"fastapi|nextjs|gin\"\n database: \"postgresql|mongodb\"\n\nconstraints:\n - \"Must run on AWS\"\n - \"Budget under $100/month\"","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Workflow","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Load","type":"text","marks":[{"type":"strong"}]},{"text":": Read spec file from disk","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Parse","type":"text","marks":[{"type":"strong"}]},{"text":": Convert to structured data","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Validate","type":"text","marks":[{"type":"strong"}]},{"text":": Check required fields and schema","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Normalize","type":"text","marks":[{"type":"strong"}]},{"text":": Standardize format for downstream use","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Export","type":"text","marks":[{"type":"strong"}]},{"text":": Output to feature analyzer","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Validation Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Project name required","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"At least one functional requirement","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"All requirements have unique IDs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Priority values are valid","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Technology stack is coherent","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Integration","type":"text"}]},{"type":"paragraph","content":[{"text":"Used by:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ac-spec-generator","type":"text","marks":[{"type":"code_inline"}]},{"text":": Generates feature list from parsed spec","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ac-feature-analyzer","type":"text","marks":[{"type":"code_inline"}]},{"text":": Analyzes requirements","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ac-complexity-assessor","type":"text","marks":[{"type":"code_inline"}]},{"text":": Estimates complexity","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"API Reference","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"See ","type":"text"},{"text":"scripts/spec_parser.py","type":"text","marks":[{"type":"code_inline"}]},{"text":" for full implementation.","type":"text"}]}]},"metadata":{"date":"2026-06-05","name":"ac-spec-parser","author":"@skillopedia","source":{"stars":11,"repo_name":"skrillz","origin_url":"https://github.com/adaptationio/skrillz/blob/HEAD/skills/ac-spec-parser/SKILL.md","repo_owner":"adaptationio","body_sha256":"f5f9423dba8716d64bdaecde3519194511ff47877fbc9ba8df9ac379bc8d3be3","cluster_key":"fd9714ec0c45472e99b526e150ee6c29ffee995fa36d348daf9e57d51024f70b","clean_bundle":{"format":"clean-skill-bundle-v1","source":"adaptationio/skrillz/skills/ac-spec-parser/SKILL.md","attachments":[{"id":"82a39d5f-08a6-53d6-b9d4-07c8c45e635b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/82a39d5f-08a6-53d6-b9d4-07c8c45e635b/attachment.py","path":"scripts/spec_parser.py","size":11222,"sha256":"4954ccfc37a9c04be0f397c10ac3983451f0039935c47a7a188aca83436cfecf","contentType":"text/x-python; charset=utf-8"}],"bundle_sha256":"d8312d8d7eb64a890ce00f90934583afeb1915119cf63dafb78676b1ce7c665a","attachment_count":1,"text_attachments":1,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":2,"skill_md_path":"skills/ac-spec-parser/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"web-development","category_label":"Web"},"exact_dupes_collapsed_into_this":1},"version":"v1","category":"web-development","import_tag":"clean-skills-v1","description":"Parse and validate project specifications. Use when loading YAML/JSON specs, validating spec structure, extracting requirements, or converting between spec formats."}},"renderedAt":1782986700649}

AC Spec Parser Parse and validate project specifications for autonomous coding. Purpose Parses YAML/JSON/Markdown specifications into structured data for feature generation and planning. Quick Start Supported Formats - YAML : , - Structured specifications - JSON : - Machine-readable specs - Markdown : - Human-readable specs with sections Specification Schema Workflow 1. Load : Read spec file from disk 2. Parse : Convert to structured data 3. Validate : Check required fields and schema 4. Normalize : Standardize format for downstream use 5. Export : Output to feature analyzer Validation Rules…