What answer do you want? What does the linux kernel need? Well, that's simple, it needs an /sbin/init program that it can load and run. Load and run means that it must be in elf (let's forget about a.out) format, and that if it is dynamically loaded, that the libraries it uses are available.
After that, to have a system that behaves like a linux/unix system, you need a lot more. One source of knowledge, besides LFS is the LSB (linux standards base). Building your own distro is not for the feint hearted though. But like the paragraph above tried to say, you can do almost everything you want. If however you want programs to run on the distro without source modifications you will want to have a standard system layout, use udev for device management. Have a reasonably standard init system, etc.
If you want to know what (say firefox) needs to be productive (ie. compiled and ran), look at its dependencies. You need those installed to run firefox.
To start the system you need a compilation environment. This is basically, when statically compiled: a shell (to run something), gcc (c compiler only), binutils (to link programs). This does not boot, so you'd have to chroot into the environment. Basically this is what a gentoo stage1 provides. From this humble beginning you need to build the actual distribution. The compilation environment is just for bootstrapping. That means first you install glibc, then rebuild gcc and binutils (and their dependencies, like internationalization libraries (gettext)).
This whole humble beginning is reasonably documented for LFS and gentoo (at least used to, but nowadays it is hidden away because too many new users would miss a step in the process and fail to get their base system up and running). After the base system is up (and you can boot into a command line) you need to get the applications you want. In short it is "simple" and just involves installing the right dependencies. In effect, there is a reason that few distributions are one person shows (unless they take another distro as starting point). Unfortunately sources come with bugs and other things that have to be worked around. You might have to persuade a build script to look at a different place for headers, etc.
I should say I am a gentoo developer, and am biased in favor of gentoo, but gentoo provides heaps of flexibility. It is also easy to base your own distro of (built you don't need to, as you can use an overlay for your own programs). Doing so would save heaps of work and pointless effort.
Finally, I'd like to address your "dependency on a 3rd-party repository". Looking at gentoo, there are two things that it provides. First of all, it provides a small set of programs (such as the package manager). Second of all, it provides scripts that automate the compilation of specific packages (ebuilds, they are executed by the package manager). This is basically what every distribution is based out of. In gentoo, most of the flavour comes from the baselayout package. This gentoo-specific package contains some specific expected files (such as a password file) as well as the gentoo init system. It would be possible to replace this entirely to have your own flavour. Unfortunately, replacing the init system will require you to write init script by hand for those applications that can get started automatically at startup (the function of the init system)