Загрузка данных


Ты работаешь на корпоративном MacBook.

Нужно безопасно перенести рабочий проект skill-а adt-markdownify-meta из временной папки zadanie2 в целевой Git-репозиторий snl-ai-spec.

Исходный рабочий проект:

/Users/23865613/IdeaProjects/untitled/zadanie2/source_project

Целевой Git-репозиторий:

/Users/23865613/snl-ai-spec

Целевой каталог skill-а:

/Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta

Целевой каталог выгруженной архитектуры:

/Users/23865613/snl-ai-spec/projects/SNL/meta

Также в репозитории snl-ai-spec есть пример Ralph Loop:

/Users/23865613/snl-ai-spec/projects/SNL/ralph-loop/service-doc-generator

В нём находятся:

- AGENTS.md
- MAIN_GOAL.md
- run-gigacode.sh

Сейчас задача — только безопасно перенести проект и подготовить каталог Ralph Loop внутри skill-а.

Не запускай Ralph Loop.
Не изменяй MAIN_GOAL.md и AGENTS.md по смыслу.
Не делай commit.
Не делай push.
Не выполняй force push.
Не удаляй исходный проект zadanie2.
Не удаляй файлы в snl-ai-spec без отдельного подтверждения.
Не копируй локальные секреты, cookies, токены, логи, виртуальное окружение и временные файлы.

Работай поэтапно.

---

# Этап 1. Проверить исходный проект

Перейди в исходный проект:

cd /Users/23865613/IdeaProjects/untitled/zadanie2/source_project

Проверь:

pwd
find . -maxdepth 2 -type f | sort
find scripts -maxdepth 2 -type f | sort 2>/dev/null || true

Проверь наличие ключевых файлов:

- run_exporter.py
- requirements.txt
- README.md
- SKILL.md
- meta_urls.txt
- meta_exporter.yaml.example
- scripts/scrape_meta.py
- scripts/html_to_markdown.py
- scripts/markdown_writer.py
- scripts/structured_meta_writer.py

Если обязательного файла нет, не продолжай перенос и покажи точный список отсутствующих файлов.

Проверь синтаксис:

python -m py_compile run_exporter.py scripts/*.py

Если есть синтаксическая ошибка, остановись и покажи её. Не копируй неисправный проект.

---

# Этап 2. Проверить целевой репозиторий

Перейди:

cd /Users/23865613/snl-ai-spec

Покажи:

pwd
git rev-parse --show-toplevel
git status --short
git branch --show-current
git remote -v

Проверь существование веток:

git branch --list develop
git branch --list features/adt-markdownify-meta
git branch -r | grep -E 'origin/develop|origin/features/adt-markdownify-meta' || true

Важно:

1. Если git status показывает чужие или непонятные незакоммиченные изменения, остановись.
2. Не выполняй git reset.
3. Не выполняй git clean.
4. Не удаляй чужие изменения.
5. В отчёте перечисли найденные изменения.

Если рабочее дерево чистое, продолжай.

---

# Этап 3. Переключиться на отдельную ветку

Если локальная ветка features/adt-markdownify-meta уже существует:

git switch features/adt-markdownify-meta

Если локальной ветки нет, но существует origin/features/adt-markdownify-meta:

git switch --track -c features/adt-markdownify-meta origin/features/adt-markdownify-meta

Если ветки нет ни локально, ни удалённо:

1. Убедись, что существует develop.
2. Переключись на develop:

git switch develop

3. Обнови ветку только fast-forward:

git pull --ff-only

4. Создай ветку:

git switch -c features/adt-markdownify-meta

После переключения покажи:

git branch --show-current
git status --short

Не выполняй commit и push.

---

# Этап 4. Проверить существующий каталог skill-а

Проверь:

ls -la /Users/23865613/snl-ai-spec/.gigacode/skills

if [ -d "/Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta" ]; then
  find /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta -maxdepth 3 -type f | sort
fi

Если каталог уже существует и содержит файлы:

1. Не удаляй его.
2. Создай резервную копию внутри временного каталога:

BACKUP_DIR="/Users/23865613/snl-ai-spec/.migration-backup/adt-markdownify-meta-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP_DIR"
rsync -a \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ \
  "$BACKUP_DIR/"

3. Покажи путь резервной копии.

Не добавляй резервную копию в Git, если .migration-backup ещё не исключён. При необходимости не изменяй .gitignore автоматически — просто сообщи об этом.

---

# Этап 5. Выполнить пробный перенос skill-а

Создай целевой каталог:

mkdir -p /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta

Сначала выполни только dry-run:

rsync -avn \
  --exclude='.git/' \
  --exclude='.venv/' \
  --exclude='venv/' \
  --exclude='output/' \
  --exclude='temp_html/' \
  --exclude='projects/' \
  --exclude='meta_exporter.yaml' \
  --exclude='*.log' \
  --exclude='*.bak' \
  --exclude='*.bak2' \
  --exclude='*.tmp' \
  --exclude='__pycache__/' \
  --exclude='*.pyc' \
  --exclude='.DS_Store' \
  --exclude='.idea/' \
  --exclude='.pytest_cache/' \
  --exclude='.mypy_cache/' \
  --exclude='.coverage' \
  --exclude='htmlcov/' \
  /Users/23865613/IdeaProjects/untitled/zadanie2/source_project/ \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/

Проанализируй dry-run.

Убедись, что не копируются:

- .git
- .venv
- output
- temp_html
- projects
- meta_exporter.yaml
- логи
- backup-файлы
- __pycache__
- pyc
- .idea
- локальные конфиги с путями пользователя
- cookies
- токены
- sessionStorage
- localStorage

Дополнительно выполни поиск потенциальных секретов в исходном проекте, исключая временные и выходные каталоги:

cd /Users/23865613/IdeaProjects/untitled/zadanie2/source_project

grep -RInE \
  --exclude-dir=.git \
  --exclude-dir=.venv \
  --exclude-dir=output \
  --exclude-dir=temp_html \
  --exclude='*.log' \
  --exclude='*.bak' \
  '(password|passwd|token|secret|cookie|authorization|bearer|sessionStorage|localStorage)' \
  . || true

Не считай обычные упоминания ограничений в README.md или SKILL.md секретами.

Если найдены реальные значения credentials, остановись и не копируй соответствующие файлы.

---

# Этап 6. Выполнить реальный перенос skill-а

Только если dry-run безопасен и секреты не найдены, выполни:

rsync -av \
  --exclude='.git/' \
  --exclude='.venv/' \
  --exclude='venv/' \
  --exclude='output/' \
  --exclude='temp_html/' \
  --exclude='projects/' \
  --exclude='meta_exporter.yaml' \
  --exclude='*.log' \
  --exclude='*.bak' \
  --exclude='*.bak2' \
  --exclude='*.tmp' \
  --exclude='__pycache__/' \
  --exclude='*.pyc' \
  --exclude='.DS_Store' \
  --exclude='.idea/' \
  --exclude='.pytest_cache/' \
  --exclude='.mypy_cache/' \
  --exclude='.coverage' \
  --exclude='htmlcov/' \
  /Users/23865613/IdeaProjects/untitled/zadanie2/source_project/ \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/

Не используй параметр --delete.

После копирования покажи:

find /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta \
  -maxdepth 4 -type f | sort

---

# Этап 7. Перенести структурированную архитектуру

Источник:

/Users/23865613/IdeaProjects/untitled/zadanie2/source_project/projects/SNL/meta

Назначение:

/Users/23865613/snl-ai-spec/projects/SNL/meta

Сначала проверь существование источника:

if [ ! -d "/Users/23865613/IdeaProjects/untitled/zadanie2/source_project/projects/SNL/meta" ]; then
  echo "Каталог структурированной архитектуры не найден"
else
  find /Users/23865613/IdeaProjects/untitled/zadanie2/source_project/projects/SNL/meta \
    -maxdepth 6 -type f | sort
fi

Если каталог существует:

1. Создай назначение:

mkdir -p /Users/23865613/snl-ai-spec/projects/SNL/meta

2. Если в назначении уже есть файлы, создай резервную копию:

META_BACKUP_DIR="/Users/23865613/snl-ai-spec/.migration-backup/SNL-meta-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$META_BACKUP_DIR"
rsync -a \
  /Users/23865613/snl-ai-spec/projects/SNL/meta/ \
  "$META_BACKUP_DIR/"

3. Выполни dry-run:

rsync -avn \
  --exclude='.DS_Store' \
  --exclude='*.log' \
  --exclude='*.bak' \
  /Users/23865613/IdeaProjects/untitled/zadanie2/source_project/projects/SNL/meta/ \
  /Users/23865613/snl-ai-spec/projects/SNL/meta/

4. Если dry-run корректен, выполни перенос:

rsync -av \
  --exclude='.DS_Store' \
  --exclude='*.log' \
  --exclude='*.bak' \
  /Users/23865613/IdeaProjects/untitled/zadanie2/source_project/projects/SNL/meta/ \
  /Users/23865613/snl-ai-spec/projects/SNL/meta/

Не используй --delete.

---

# Этап 8. Подготовить Ralph Loop внутри skill-а

Исходный пример:

/Users/23865613/snl-ai-spec/projects/SNL/ralph-loop/service-doc-generator

Целевой каталог:

/Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ralph-loop

Проверь наличие:

- AGENTS.md
- MAIN_GOAL.md
- run-gigacode.sh

Если хотя бы одного файла нет, не копируй неполный набор и сообщи об ошибке.

Если все файлы есть:

mkdir -p /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ralph-loop

cp \
  /Users/23865613/snl-ai-spec/projects/SNL/ralph-loop/service-doc-generator/AGENTS.md \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ralph-loop/AGENTS.md

cp \
  /Users/23865613/snl-ai-spec/projects/SNL/ralph-loop/service-doc-generator/MAIN_GOAL.md \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ralph-loop/MAIN_GOAL.md

cp \
  /Users/23865613/snl-ai-spec/projects/SNL/ralph-loop/service-doc-generator/run-gigacode.sh \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ralph-loop/run-gigacode.sh

chmod +x \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta/ralph-loop/run-gigacode.sh

Важно:

- не запускай run-gigacode.sh;
- не создавай progress/*.done.md;
- не создавай goal_done.md;
- не запускай бесконечный цикл;
- не изменяй пока инструкции под нашу задачу;
- только скопируй пример для последующей адаптации.

---

# Этап 9. Проверить пути после переноса

Проверь, нет ли в перенесённом skill-е жёстких ссылок на старый проект:

grep -RIn \
  --exclude-dir=.git \
  --exclude-dir=.venv \
  --exclude-dir=output \
  --exclude-dir=temp_html \
  '/Users/23865613/IdeaProjects/untitled/zadanie2/source_project' \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta || true

Также проверь упоминания старого каталога adt-markdownify-meta-mvp:

grep -RIn \
  --exclude-dir=.git \
  --exclude-dir=.venv \
  'adt-markdownify-meta-mvp' \
  /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta || true

Пока не исправляй найденные пути автоматически.

Сначала покажи список файлов и строк, чтобы можно было отдельно решить, какие пути должны быть относительными.

---

# Этап 10. Проверить Python-код уже в snl-ai-spec

Перейди:

cd /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta

Выполни:

python -m py_compile run_exporter.py scripts/*.py

Если локального Python недостаточно, не устанавливай зависимости глобально.

Не создавай .venv внутри репозитория без отдельного подтверждения.

Проверь импорты без запуска браузера:

python - <<'PY'
import importlib.util
from pathlib import Path

root = Path(".")
files = [root / "run_exporter.py"] + sorted((root / "scripts").glob("*.py"))

failed = []

for file_path in files:
    module_name = "check_" + file_path.stem
    try:
        spec = importlib.util.spec_from_file_location(module_name, file_path)
        if spec is None or spec.loader is None:
            failed.append((str(file_path), "spec not created"))
            continue
        module = importlib.util.module_from_spec(spec)
        spec.loader.exec_module(module)
        print(f"IMPORT OK: {file_path}")
    except SystemExit:
        print(f"IMPORT SYSTEM EXIT: {file_path}")
    except Exception as error:
        failed.append((str(file_path), repr(error)))

if failed:
    print("\nIMPORT PROBLEMS:")
    for file_path, error in failed:
        print(f"- {file_path}: {error}")
else:
    print("\nALL IMPORTS OK")
PY

Если import-проверка требует отсутствующие зависимости, покажи их названия, но не меняй системный Python автоматически.

---

# Этап 11. Проверить Git-изменения

Перейди:

cd /Users/23865613/snl-ai-spec

Покажи:

git branch --show-current
git status --short
git diff --stat
git diff --name-status

Не выполняй:

- git add;
- git commit;
- git push;
- git reset;
- git clean;
- git checkout --;
- git restore;
- force push.

---

# Финальный отчёт

В конце выведи:

# Перенос adt-markdownify-meta в snl-ai-spec

## 1. Исходный проект

Указать путь.

## 2. Целевой репозиторий

Указать путь.

## 3. Активная ветка

Указать точное имя.

## 4. Что перенесено в skill

Показать дерево:

find /Users/23865613/snl-ai-spec/.gigacode/skills/adt-markdownify-meta \
  -maxdepth 4 -type f | sort

## 5. Что намеренно не перенесено

Перечислить:

- .venv;
- output;
- temp_html;
- meta_exporter.yaml;
- логи;
- backup-файлы;
- локальные IDE-файлы;
- cookies;
- токены;
- credentials.

## 6. Структурированная архитектура

Указать:

/Users/23865613/snl-ai-spec/projects/SNL/meta

Показать количество файлов:

find /Users/23865613/snl-ai-spec/projects/SNL/meta -type f | wc -l

## 7. Ralph Loop

Указать, что скопированы:

- ralph-loop/AGENTS.md;
- ralph-loop/MAIN_GOAL.md;
- ralph-loop/run-gigacode.sh.

Отдельно написать, что Ralph Loop не запускался и пока не адаптирован под adt-markdownify-meta.

## 8. Результат py_compile

Указать точно.

## 9. Найденные абсолютные пути старого проекта

Показать список файлов и строк.

## 10. Git status

Показать изменения, но ничего не коммитить.

## 11. Что нужно сделать следующим этапом

Написать:

1. адаптировать MAIN_GOAL.md под выгрузку архитектуры META;
2. адаптировать AGENTS.md под read-only работу;
3. проверить пути в run-gigacode.sh;
4. проверить используемые GigaCode skills;
5. только после проверки запускать Ralph Loop;
6. отдельно подготовить commit по стандарту adt-git-commit.

Главное условие:
исходный проект zadanie2 должен остаться нетронутой резервной копией, а перенос должен выполняться без удаления файлов и без commit/push.