chore: bring flutter client, docs, deploy and tools into monorepo

This commit is contained in:
2026-07-05 03:22:24 +02:00
parent fcc81e2a74
commit 7a931d2d6f
189 changed files with 19124 additions and 0 deletions
@@ -0,0 +1,80 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SKILL_FILE="$ROOT_DIR/SKILL.md"
fail() {
echo "ERROR: $*" >&2
exit 1
}
[[ -f "$SKILL_FILE" ]] || fail "Missing SKILL.md"
ruby -ryaml -e '
path = ARGV.fetch(0)
text = File.read(path)
unless text.start_with?("---\n")
abort "ERROR: SKILL.md must start with YAML frontmatter"
end
parts = text.split(/^---\s*$/, 3)
abort "ERROR: SKILL.md frontmatter is not closed" unless parts.length == 3
frontmatter = YAML.safe_load(parts[1], permitted_classes: [], aliases: false)
abort "ERROR: frontmatter must be a map" unless frontmatter.is_a?(Hash)
name = frontmatter["name"]
description = frontmatter["description"]
abort "ERROR: missing frontmatter name" if name.to_s.empty?
abort "ERROR: missing frontmatter description" if description.to_s.empty?
expected = File.basename(File.dirname(path))
abort "ERROR: frontmatter name #{name.inspect} does not match #{expected.inspect}" unless name == expected
required_terms = %w[unit widget integration mock plugin]
missing = required_terms.reject { |term| description.downcase.include?(term) }
abort "ERROR: description missing trigger terms: #{missing.join(", ")}" unless missing.empty?
' "$SKILL_FILE"
ruby -e '
root = ARGV.fetch(0)
failed = false
Dir[File.join(root, "**/*.md")].sort.each do |file|
File.readlines(file).each_with_index do |line, index|
line.scan(/\[[^\]]+\]\(([^)]+)\)/).flatten.each do |target|
next if target.match?(/\A(?:https?:|mailto:|#)/)
path = target.split("#", 2).first
next if path.empty?
full_path = File.expand_path(path, File.dirname(file))
unless File.exist?(full_path)
warn "ERROR: missing local link #{file}:#{index + 1} -> #{target}"
failed = true
end
end
end
end
exit(failed ? 1 : 0)
' "$ROOT_DIR"
while IFS= read -r -d '' file; do
count="$(grep -c '^```' "$file" || true)"
if (( count % 2 != 0 )); then
fail "Unbalanced fenced code blocks in $file"
fi
done < <(find "$ROOT_DIR" -name '*.md' -print0)
[[ -z "$(find "$ROOT_DIR" -name '.DS_Store' -print)" ]] || fail "Remove .DS_Store files from flutter-testing"
grep -q 'scripts/verify-examples.sh' "$SKILL_FILE" || fail "SKILL.md must route to scripts/verify-examples.sh"
for pattern in \
'tester\.trace\(' \
'tester\.takeScreenshot\(' \
'flutter test --platform' \
'--no-sound-null-safety' \
'captureNamed' \
'flutter pub run build_runner build' \
'setSurfaceSize\(Size\.zero\)'
do
if rg -n --glob '*.md' -- "$pattern" "$ROOT_DIR/references"; then
fail "Forbidden stale pattern found: $pattern"
fi
done
echo "flutter-testing skill checks passed"